Django-delegado ay isang Django app upang makakuha ng awtomatikong CHAINABLE MANAGER / QUERYSET delegado mga pamamaraan.
Karaniwan, sa pamamagitan ng pagtukoy pamamaraan manager, Django hinahayaan kang gawin ito:
>>> SomeModel.objects.custom_query ()
... Ngunit ito AY HINDI hayaan mong gawin ito:
>>> SomeModel.objects.custom_query (). Another_custom_query ()
... Maliban kung doblehin ang iyong mga pamamaraan at matukoy ang isang kalabisan queryset subclass ... HANGGANG NGAYON.
Sa DelegateManager atdelegate, maaari mong isulat maintainable logic custom-query na may libreng chaining. sa halip ng pagtukoy sa mga paraan ng manager, tukuyin mo ang mga pamamaraan queryset, palamutihan ang mga nais mong i-atang, at isang dalawang-line DelegateManager subclass pagtukoy ng queryset. ET Viola. Tulad ng sa gayon:
mula sa pag-import delegado DelegateManager,-atang
klase CustomQuerySet (models.query.QuerySet):
& Nbsp;delegate
& Nbsp; def qs_method (sa sarili, some_value):
& Nbsp; return self.filter (some_param__icontains = some_value)
& Nbsp; def dont_delegate_me (sa sarili):
& Nbsp; return self.filter (some_other_param = "ibang bagay")
klase CustomManager (DelegateManager):
& Nbsp; __ queryset__ = CustomQuerySet
klase SomeModel (models.Model):
& Nbsp; bagay = CustomManager ()
# Ito gagana:
SomeModel.objects.qs_method ('yo dogg')
# Na ito ay magkakaroon din gumana:
SomeModel.objects.qs_method ('yo dogg'). Qs_method ('i narinig na gusto mo queryset pamamaraan sa pagtatalaga')
Upang magtalaga ng lahat ng mga pamamaraan sa isang QuerySet awtomatikong, maaari kang lumikha ng isang subclass ng DelegateQuerySet. Ang dalawang QuerySet subclasses gumana identically:
mula sa pag-import delegado DelegateQuerySet,-atang
klase ManualDelegator (models.query.QuerySet):
& Nbsp;delegate
& Nbsp; def qs_method (sa sarili):
& Nbsp; # ...
klase AutomaticDelegator (DelegateQuerySet):
& Nbsp; def qs_method (sa sarili):
& Nbsp; # ...
Maaari mo ring ilapat angdelegate dekorador nang direkta sa isang klase - ito Pinapahintulutan ka na magtalaga ng lahat ng mga pamamaraan sa isang klase nang walang disrupting ang inheritance kadena nito. Halimbawa ito ay gumagana identically sa nakaraang dalawang:
mula sa pag-import delegado delegado
delegate
klase CustomQuerySet (models.query.QuerySet):
& Nbsp; def qs_method (sa sarili, some_value):
& Nbsp; return self.filter(some_param__icontains=some_value)
Requirements:
- Python
- Django
Mga Komento hindi natagpuan