Sto provando a creare una funzione personalizzata che posso inserire in una "catena" di queryset che applicherà un filtro al queryset. Come con i normali filtri di queryset di Django, prenderà il queryset a sinistra di esso e passerà il queryset risultante a destra.Filtro del set del modello Django come funzione
Prima di aggiungere la mia funzione personalizzata per la catena set di query:
models.MyModel.objects.all()
models.MyModel.objects.some_manger_function()
models.MyModel.objects.some_manger_function().count()
models.MyModel.objects.some_manger_function().filter(title='something')
Dopo aver aggiunto la mia funzione personalizzata per la catena set di query:
models.MyModel.objects.all().my_custom_filter()
models.MyModel.objects.some_manger_function().my_custom_filter()
models.MyModel.objects.some_manger_function().my_custom_filter().count()
models.MyModel.objects.some_manger_function().my_custom_filter()\
.filter(title='something')
Non sono sicuro di come costruire la mia funzione di fare Questo. Ha bisogno di una sorta di decoratore intorno ad esso?
???? def my_custom_filter(???):
???? return qs.filter(id__gte=10)
Qualcuno sa un buon modo per ottenere questo risultato?
Quanto segue potrebbe funzionare, ma speravo in qualcosa di un po 'più simile a Django.
def my_custom_filter(qs):
return qs.filter(id__gte=1)
my_custom_filter(models.MyModel.objects.all()).count()
Qualsiasi consiglio è molto apprezzato.
Grazie, Joe
UPDATE: Sto cercando di capire i dettagli della soluzione di Ignacio. Io non ho fatto troppo con QuerySet ignorando così sto mettendo insieme quello che sono in grado di trovare ...
class MyQuerySet(QuerySet):
def filter(self, *args, **kwargs):
return super(self.__class__, self).filter(*args, **kwargs).\
filter(id__gt=5)
class MyManager(models.Manager):
def testqs(self):
return MyQuerySet(self.model)
Tuttavia, non credo che questo sta funzionando il modo in cui mi aspetto. Eventuali suggerimenti?
>>> models.MyModel.objects.testqs().filter()
UPDATE 2: questo articolo si è rivelato utile. http://zmsmith.com/2010/04/using-custom-django-querysets/
+1 per il collegamento in update2, mi ha aiutato anche. –