Django-delegasi adalah aplikasi Django untuk mendapatkan OTOMATIS chainable MANAGER / QuerySet DELEGATE METODE.
Biasanya, dengan mendefinisikan metode manajer, Django memungkinkan Anda melakukan hal ini:
>>> SomeModel.objects.custom_query ()
... Tapi TIDAK AKAN membiarkan Anda melakukan hal ini:
Another_custom_query () >>> SomeModel.objects.custom_query ().
... Kecuali jika Anda menduplikasi metode dan menentukan queryset subclass berlebihan ... SAMPAI SEKARANG.
Dengan DelegateManager dandelegate, Anda dapat menulis dipertahankan custom-permintaan logika dengan chaining gratis. bukannya mendefinisikan metode manajer, Anda menentukan metode queryset, menghias mereka yang Anda ingin mendelegasikan, dan dua baris DelegateManager subclass menentukan queryset tersebut. ET VIOLA. Seperti:
dari delegasi impor DelegateManager, mendelegasikan
Kelas CustomQuerySet (models.query.QuerySet):
& Nbsp;delegate
& Nbsp; def qs_method (self, some_value):
& Nbsp; kembali self.filter (some_param__icontains = some_value)
& Nbsp; def dont_delegate_me (self):
& Nbsp; kembali self.filter (some_other_param = "sesuatu yang lain")
Kelas CustomManager (DelegateManager):
& Nbsp; __ queryset__ = CustomQuerySet
kelas SomeModel (models.Model):
& Nbsp; benda = CustomManager ()
# Ini akan bekerja:
SomeModel.objects.qs_method ('yo dogg')
# Ini juga akan bekerja:
SomeModel.objects.qs_method ('yo dogg'). Qs_method ('i mendengar Anda seperti queryset delegasi metode')
Untuk mendelegasikan semua metode dalam QuerySet otomatis, Anda dapat membuat subclass dari DelegateQuerySet. Kedua subclass QuerySet bekerja identik:
dari delegasi impor DelegateQuerySet, mendelegasikan
kelas ManualDelegator (models.query.QuerySet):
& Nbsp;delegate
& Nbsp; def qs_method (self):
& Nbsp; # ...
Kelas AutomaticDelegator (DelegateQuerySet):
& Nbsp; def qs_method (self):
& Nbsp; # ...
Anda juga dapat menerapkan dekoratordelegate langsung ke kelas - ini memungkinkan Anda untuk mendelegasikan semua metode di kelas tanpa mengganggu rantai warisan nya. Contoh ini bekerja identik dengan dua sebelumnya:
dari delegasi delegasi impor
delegate
Kelas CustomQuerySet (models.query.QuerySet):
& Nbsp; def qs_method (self, some_value):
& Nbsp; kembali self.filter(some_param__icontains=some_value)
Requirements:
- Python
- Django
Komentar tidak ditemukan