8

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

4

2 回答 2

8

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

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

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

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

于 2008-12-11T23:03:17.570 回答
3

您的模型必须包含关系字段(ForeigKey 和 ManyToManyField),并设置了相关名称关键字参数。在此处查看文档。

于 2008-12-10T20:55:03.040 回答