模型中的Django Queryset? [英] Django Queryset across Models?

查看:105
本文介绍了模型中的Django Queryset?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有几个模型,想要返回所有属于用户的模型的查询,我想知道它是否可能从多个模型返回一个Queryset?

解决方案

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



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

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

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


I have several Models and want to return a queryset of all the Models belonging to a User, I'm wondering if its possible to return one Queryset from multiple Models?

解决方案

I am assuming that you mean you would like to return a single queryset of all the objects belonging to the user from each model.

Do you need a queryset or just an iterable? AFAIK, heterogeneous qs's are not possible. However, you could easily return a list, a chained iterator (itertools) or a generator to do what you want. This assumes that the models referencing the user are known ahead of time. Assuming default related_name, related queryset attributes could be accessed from user instance via the model's name:

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

Of course, using any heterogeneous list you would either only be able to use fields or methods that are defined across all such models, or you would have to determine the type of each object to do any type specific actions.

这篇关于模型中的Django Queryset?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆