Ber*_*ant 12
简短解决方案
qs = Model.objects.filter(...) # qs with objects to exclude
result = Model.objects.exclude(pk__in=qs.values_list('pk', flat=True))
Run Code Online (Sandbox Code Playgroud)
更多DRY解决方案
但是,如果您想多次使用逻辑,我建议将其封装在一个方法中.这是我在自定义查询集中使用的一个例子:
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)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1083 次 |
最近记录: |