W Django, jeśli mam klasę modelu, np.W Django, czy możesz dodać metodę do zapytań?
from django.db import models
class Transaction(models.Model):
...
następnie jeśli chcę dodać metody do modelu, do przechowywania np. dość złożone filtry, mogę dodać niestandardowego menedżera modelu, np.
class TransactionManager(models.Manager):
def reasonably_complex_filter(self):
return self.get_query_set().filter(...)
class Transaction(models.Model):
objects = TransactionManager()
i wtedy mogę zrobić:
>>> Transaction.objects.reasonably_complex_filter()
Czy jest jakiś sposób mogę dodać niestandardową metodę, która może być przykuty do końca zapytania ustalonym z modelu?
tj dodać niestandardową metodę w taki sposób, że może to zrobić:
>>> Transaction.objects.filter(...).reasonably_complex_filter()
Dobrze, gówno. Czy wiesz, czy sugerowana metoda w tym poście działa niezawodnie? Komentarze sugerują, że podejście "__getattr__" ma pewne problemy. –
Nie stosowałem tego kodu w praktyce, ale widziałem "__getattr__" używany w projektach Django niezawodnie przedtem w podobny sposób. –
Artykuł jest dość stary, ale chodzi o to, że musisz w jakiś sposób dołączyć swoje metody do obiektu 'QuerySet'. –