您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

python – Django:获取查询集的补充

5b51 2022/1/14 8:23:22 python 字数 1544 阅读 595 来源 www.jb51.cc/python

我得到一个特定模型的查询集,我想得到它的补充,即该模型的所有实例都不在上述查询集中. 我怎样才能做到这一点? 简短解决方案 qs = Model.objects.filter(...) # qs with objects to exclude result = Model.objects.exclude(pk__in=qs.values_list('pk', flat=True)) 更多DRY解决

概述

我怎样才能做到这一点?

qs = Model.objects.filter(...) # qs with objects to exclude
result = 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)

总结

以上是编程之家为你收集整理的python – Django:获取查询集的补充全部内容,希望文章能够帮你解决python – Django:获取查询集的补充所遇到的程序开发问题。


如果您也喜欢它,动动您的小指点个赞吧

除非注明,文章均由 laddyq.com 整理发布,欢迎转载。

转载请注明:
链接:http://laddyq.com
来源:laddyq.com
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


联系我
置顶