
短期解决方案
qs = Model.objects.filter(...) # qs with objects to excluderesult = Model.objects.exclude(pk__in=qs.values_list('pk', flat=True))更多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)欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)