Django-nümayəndəsi avtomatik chainable MANAGER / QUERYSET nümayəndə metodları almaq üçün Django app edir.
Adətən, menecer üsulları müəyyən, Django Bu imkan verir:
>>> SomeModel.objects.custom_query ()
... Ancaq bunu edək deyil:
>>> SomeModel.objects.custom_query (). Another_custom_query ()
... Siz üsulları dublikat və NOW qədər bir lazımsız queryset yarımsinif ... müəyyən halda.
DelegateManager vədelegate ilə siz pulsuz zəncirləmə ilə maintainable xüsusi sorğu məntiq yaza bilərsiniz. yerinə meneceri üsulları müəyyən, siz, queryset üsulları müəyyən siz nümayəndə istədiyiniz də, queryset ifadə iki-line DelegateManager yarımsinif bəzəyəcək. ET VIOLA. Belə ki, kimi:
nümayəndə idxal DelegateManager ki, nümayəndə
class CustomQuerySet (models.query.QuerySet):
& Nbsp;delegate
& Nbsp; def qs_method (özünü, some_value):
& Nbsp; qaytarılması self.filter (some_param__icontains = some_value)
& Nbsp; def dont_delegate_me (özünü):
& Nbsp; qaytarılması self.filter (some_other_param = "başqa bir şey")
class CustomManager (DelegateManager):
& Nbsp; __ queryset__ = CustomQuerySet
sinif SomeModel (models.Model):
& Nbsp; obyektləri = CustomManager ()
# Bu işləyəcək:
SomeModel.objects.qs_method ('yo dogg)
# Bu da işləyəcək:
SomeModel.objects.qs_method ('yo dogg). Qs_method (i metodu nümayəndə heyətini queryset kimi eşitdim)
Avtomatik QuerySet da üsulları bütün nümayəndə üçün, DelegateQuerySet bir yarımsinif yarada bilərsiniz. Bu iki QuerySet subclasses eyni iş:
nümayəndə idxal DelegateQuerySet ki, nümayəndə
sinif ManualDelegator (models.query.QuerySet):
& Nbsp;delegate
& Nbsp; def qs_method (özünü):
& Nbsp; # ...
class AutomaticDelegator (DelegateQuerySet):
& Nbsp; def qs_method (özünü):
& Nbsp; # ...
Siz həmçinin bir sinif birbaşadelegate decorator müraciət edə bilər - bu, onun miras zəncir axsatmadan bir sinif bütün üsulları nümayəndə verir. Bu, misal əvvəlki iki eyni işləyir:
nümayəndə idxal nümayəndəsi olan
delegate
class CustomQuerySet (models.query.QuerySet):
& Nbsp; def qs_method (özünü, some_value):
& Nbsp; qaytarılması self.filter(some_param__icontains=some_value)
Requirements:
- Python
- Django
Şərhlər tapılmadı