[PYTHON] Comment implémenter "named_scope" de RubyOnRails avec Django

Aperçu

J'ai essayé quelque chose comme named_scope de RubyOnRails avec Django

code

from django.db.models.query import QuerySet
from django.db import models 

class PlayerScopeMixin(object):
	"""
    Player Class Scope Chain Mixin
	"""

    @property
    def newcomer_time(self):
		"""
		:return:Heure de début de la période du nouveau joueur(Il y a une semaine à partir de maintenant)
		"""
       date_obj = datetime.datetime.now(utc) - datetime.timedelta(7)
       return date_obj

	def by_active(self):
		"""
Obtenez un enregistrement actif
		:return:Filtre QuerySet
		"""
		return self.filter(active_flg = True)

    def by_newcomer(self, newcomer_flg=True):
        """
Extraction d'enregistrements par jugement du nouveau joueur
		 :param limit_flg: True(Nouveau joueur) / False(非Nouveau joueur) 
        :return:Filtre QuerySet
        """
        return self.filter(created_at__gt=self.active_limit_time)

	def by_active_newcomer(self):
        """
Nouvel utilisateur actif
        """
        return self.by_active().by_newcomer()




class PlayerQuerySet(QuerySet, PlayerScopesMixin):
	"""
	PlayerQuerySet
	"""
	pass


class PlayerManager(models.Manager, PlayerScopeMixin):
	"""
	PlayerManager
	"""
	def get_query_set(self):
        return PlayerQuerySet(self.model, using=self._db)


class Player(models.Model):
	class Meta:
		app_label = 'player'
	
	active_flg = models.BooleanField(default=False)
	created_at = models.DateTimeField(auto_now_add=True)
	updated_at = models.DateTimeField(auto_now=True)

Exemple d'exécution de code

> Player.by_active_newcommer() == Player.by_active().by_newcomer()

Recommended Posts

Comment implémenter "named_scope" de RubyOnRails avec Django
Comment démarrer avec Django
Comment effectuer un traitement arithmétique avec le modèle Django
Comment vérifier la version de Django
J'ai essayé de résumer brièvement la procédure de démarrage du développement de Django
Comment développer une application de panier avec Django
Comment spécifier des attributs avec Mock of Python
Comment gérer les caractères déformés dans json de Django REST Framework
Comment générer un CSV d'en-tête multiligne avec des pandas
Comment déduire l'estimation MAP de HMM avec PyStruct
Comment déduire une estimation MAP de HMM avec OpenGM
Comment apprendre le SVM structuré de ChainCRF avec PyStruct
Résumé de la façon de partager l'état avec plusieurs fonctions
Comment mettre à jour avec SQLAlchemy?
Comment lancer avec Theano
Comment modifier avec SQLAlchemy?
Comment séparer les chaînes avec ','
Comment faire RDP sur Fedora31
Comment supprimer avec SQLAlchemy?
Gestion des fichiers statiques lors du déploiement en production avec Django
Comment vérifier le comportement d'ORM avec un fichier avec django
Comment activer la lecture / écriture de net.Conn avec Golang pour annuler avec le contexte
[Django] Comment donner des valeurs d'entrée à l'avance avec ModelForm
Comment résoudre la protection CSRF lors de l'utilisation d'AngularJS avec Django
Comment afficher une liste des versions installables avec pyenv
J'ai essayé d'implémenter ListNet d'apprentissage de rang avec Chainer
Étapes pour développer Django avec VSCode
Python: comment utiliser async avec
[Django] Comment tester le formulaire [TDD]
Résumé de l'utilisation de pandas.DataFrame.loc
Pour utiliser virtualenv avec PowerShell
Comment installer python-pip avec ubuntu20.04LTS
Standardiser le HTML à louer avec Django
Comment gérer les données déséquilibrées
Résumé de l'utilisation de pyenv-virtualenv
Comment démarrer avec Scrapy
Comment démarrer avec Python
Comment refléter CSS dans Django
Comment gérer l'erreur DistributionNotFound
Comment augmenter les données avec PyTorch
Comment calculer la date avec python
Comment écrire un fichier wsgi.py indépendant de l'environnement Django1.9
Comment installer mysql-connector avec pip3
Résumé de l'utilisation de csvkit
Comment INNER JOIN avec SQL Alchemy
Comment installer Anaconda avec pyenv
Comment extraire des fonctionnalités de données de séries chronologiques avec les bases de PySpark
Comment gérer "Vous avez plusieurs backends d'authentification configurés ..." (Django)
[Hugo] Résumé de la façon d'ajouter des pages au site créé avec Learn
Comment implémenter du code Java en arrière-plan de Red Hat (Linux ONE)
Comment surveiller l'état d'exécution de sqlldr avec la commande pv
Explique comment utiliser TensorFlow 2.X avec l'implémentation de VGG16 / ResNet50
Node.js: Comment tuer les descendants d'un processus démarré par child_process.fork ()
[Astuces] Comment étendre le modèle lors de la création de HTML avec django
Notes d'étape pour démarrer avec django
[Python] Résumé de l'utilisation des pandas
Comment titrer plusieurs figures avec matplotlib