我有几个模型,并希望返回属于用户的所有模型的查询集,我想知道是否可以从多个模型返回一个Queryset?
我假设你的意思是你想从每个模型返回属于用户的所有对象的单个查询集.
您需要一个查询集还是只需一个可迭代的?AFAIK,异构的qs是不可能的.但是,您可以轻松返回列表,链式迭代器(itertools)或生成器来执行您想要的操作.这假定引用用户的模型是提前知道的.假设默认的related_name,可以通过模型的名称从用户实例访问相关的查询集属性:
qs = getattr(user, '%s_set' % model_name.lower());
当然,使用任何异构列表,您只能使用在所有此类模型中定义的字段或方法,或者您必须确定每个对象的类型以执行任何类型特定的操作.