当前位置:  开发笔记 > 编程语言 > 正文

跨模型的Django Queryset?

如何解决《跨模型的DjangoQueryset?》经验,为你挑选了1个好方法。

我有几个模型,并希望返回属于用户的所有模型的查询集,我想知道是否可以从多个模型返回一个Queryset?



1> Wayne Werner..:

我假设你的意思是你想从每个模型返回属于用户的所有对象的单个查询集.

您需要一个查询集还是只需一个可迭代的?AFAIK,异构的qs是不可能的.但是,您可以轻松返回列表,链式迭代器(itertools)或生成器来执行您想要的操作.这假定引用用户的模型是提前知道的.假设默认的related_name,可以通过模型的名称从用户实例访问相关的查询集属性:

qs = getattr(user, '%s_set' % model_name.lower());

当然,使用任何异构列表,您只能使用在所有此类模型中定义的字段或方法,或者您必须确定每个对象的类型以执行任何类型特定的操作.

推荐阅读
保佑欣疼你的芯疼
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有