Bir comperyset alıyorum Ben yukarıda belirtilen queryset içinde değil, bu modelin tüm örneklerini almak istiyorum.Django: Belirli bir model için bir queryset alıyorum ve queryset
Bunu nasıl yapabilirim?
Bir comperyset alıyorum Ben yukarıda belirtilen queryset içinde değil, bu modelin tüm örneklerini almak istiyorum.Django: Belirli bir model için bir queryset alıyorum ve queryset
Bunu nasıl yapabilirim?
Kısa çözüm
qs = Model.objects.filter(...) # qs with objects to exclude
result = Model.objects.exclude(pk__in=qs.values_list('pk', flat=True))
Daha KURU çözüm
Ancak, mantık defalarca kullanmak istiyorsanız, bir yöntemde hapsetmek için öneririm. Size bu tamamlayıcı almak için en hassas yol vermek için, size tamamlayıcı istediğiniz zincirle QuerySet Django için yardımcı olacak
class QuerysetUtils:
def get_queryset_complement(self, method):
return self.exclude(pk__in=method().values_list('pk', flat=True))
class ExpirableQueryset(QuerysetUtils, models.query.QuerySet):
def expired(self):
return self.filter(expiration__lte=timezone.now())
def unexpired(self):
return self.get_queryset_complement(self.expired)
, bunun bir alt sorgu olarak yürütüldüğünü, yani hariç tutulacak tüm kimliklerin hiçbir zaman oluşturulmadığını (aksi takdirde potansiyel bir performans vuruşu olabilir) not edin – second
Bu en özlü çözüm mü? –
Belki de kullanım durumunuz için daha iyi bir tane var ama daha sonra yararlı olacaktır, çünkü Cush Pratt dedi ki, bize bazı kodlar gösterebilirsiniz .... –
: İşte personnaly özel sorgu kümesi içinde kullanılan bir örnektir. –
Herhangi bir queryset için çalışan bir şey istiyorum. –