[PYTHON] So implementieren Sie "named_scope" von RubyOnRails mit Django

Überblick

Ich habe mit Django so etwas wie named_scope von RubyOnRails ausprobiert

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:Startzeit der neuen Spielerperiode(Vor einer Woche ab jetzt)
		"""
       date_obj = datetime.datetime.now(utc) - datetime.timedelta(7)
       return date_obj

	def by_active(self):
		"""
Aktive Aufzeichnung abrufen
		:return:QuerySet-Filter
		"""
		return self.filter(active_flg = True)

    def by_newcomer(self, newcomer_flg=True):
        """
Rekordextraktion durch Beurteilung eines neuen Spielers
		 :param limit_flg: True(Neuer Spieler) / False(非Neuer Spieler) 
        :return:QuerySet-Filter
        """
        return self.filter(created_at__gt=self.active_limit_time)

	def by_active_newcomer(self):
        """
Neuer aktiver Benutzer
        """
        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)

Beispiel für die Codeausführung

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

Recommended Posts

So implementieren Sie "named_scope" von RubyOnRails mit Django
Wie fange ich mit Django an?
So führen Sie eine arithmetische Verarbeitung mit der Django-Vorlage durch
So überprüfen Sie die Version von Django
Ich habe versucht, das Entwicklungsstartverfahren von Django kurz zusammenzufassen
So entwickeln Sie eine Cart-App mit Django
So legen Sie Attribute mit Mock of Python fest
Wie man mit verstümmelten Charakteren in json von Django REST Framework umgeht
So geben Sie die CSV eines mehrzeiligen Headers mit Pandas aus
Ableiten der MAP-Schätzung von HMM mit PyStruct
Ableiten der MAP-Schätzung von HMM mit OpenGM
Wie man strukturiertes SVM von ChainCRF mit PyStruct lernt
Zusammenfassung, wie der Status mit mehreren Funktionen geteilt wird
Wie aktualisiere ich mit SQLAlchemy?
Wie man mit Theano besetzt
Wie mit SQLAlchemy ändern?
So trennen Sie Zeichenfolgen mit ','
Wie man RDP auf Fedora31 macht
Wie lösche ich mit SQLAlchemy?
Umgang mit statischen Dateien bei der Bereitstellung in der Produktion mit Django
So überprüfen Sie das Verhalten von ORM mit einer Datei mit django
So aktivieren Sie das Lesen / Schreiben von net.Conn mit golang, um mit dem Kontext abzubrechen
[Django] Wie man Eingabewerte im Voraus mit ModelForm angibt
So lösen Sie den CSRF-Schutz bei Verwendung von AngularJS mit Django
So zeigen Sie eine Liste der mit pyenv installierbaren Versionen an
Ich habe versucht, ListNet of Rank Learning mit Chainer zu implementieren
Schritte zur Entwicklung von Django mit VSCode
Python: So verwenden Sie Async mit
[Django] So testen Sie Form [TDD]
Zusammenfassung der Verwendung von pandas.DataFrame.loc
So verwenden Sie virtualenv mit PowerShell
So installieren Sie Python-Pip mit Ubuntu20.04LTS
Standardisieren Sie HTML, um mit Django gemietet zu werden
Umgang mit unausgeglichenen Daten
Zusammenfassung der Verwendung von pyenv-virtualenv
Wie fange ich mit Scrapy an?
Erste Schritte mit Python
Wie man CSS in Django reflektiert
Umgang mit dem DistributionNotFound-Fehler
Aufblasen von Daten (Datenerweiterung) mit PyTorch
So berechnen Sie das Datum mit Python
Wie schreibe ich Django1.9 umweltunabhängig wsgi.py
So installieren Sie den MySQL-Connector mit pip3
Zusammenfassung der Verwendung von csvkit
So verbinden Sie INNER mit SQL Alchemy
So installieren Sie Anaconda mit pyenv
So extrahieren Sie Funktionen von Zeitreihendaten mit PySpark Basics
Umgang mit "Sie haben mehrere Authentifizierungs-Backends konfiguriert ..." (Django)
[Hugo] Zusammenfassung zum Hinzufügen von Seiten zu der mit Learn erstellten Site
So implementieren Sie Java-Code im Hintergrund von Red Hat (Linux ONE)
So überwachen Sie den Ausführungsstatus von sqlldr mit dem Befehl pv
Erklärt, wie TensorFlow 2.X mit der Implementierung von VGG16 / ResNet50 verwendet wird
Node.js: So töten Sie Nachkommen eines Prozesses, der von child_process.fork () gestartet wurde
[Tipps] Die Vorgehensweise beim Erstellen von HTML mit Django wird erweitert
Schritt Notizen, um mit Django zu beginnen
[Python] Zusammenfassung der Verwendung von Pandas
Wie man mit matplotlib mehrere Figuren betitelt