Python 如何将queryset列添加到另一个queryset?
我有这个问题,我已经搜索了好几天,但我仍然没有找到解决方法。 我有一个querysetPython 如何将queryset列添加到另一个queryset?,python,django,django-queryset,Python,Django,Django Queryset,我有这个问题,我已经搜索了好几天,但我仍然没有找到解决方法。 我有一个querysetq1向我显示了一个型号id和一个列可用 我想将该列添加到Model.objects.all()results中,但问题是q1是计算可用金额的查询结果,因此没有可参考的表或模型。 有什么建议或解决方案吗 示例代码: q1=Offer.Suboffer.through.objects.values("offer_id","suboffer_id").annotate(avai
q1
向我显示了一个型号id
和一个列可用
我想将该列添加到Model.objects.all()
results中,但问题是q1
是计算可用金额的查询结果,因此没有可参考的表或模型。
有什么建议或解决方案吗
示例代码:
q1=Offer.Suboffer.through.objects.values("offer_id","suboffer_id").annotate(available=F("suboffer_id__Product_offer_id__Store_Amount")/F("suboffer_id__Amount")).values("offer_id", available=Min("available"))
我在项目的OfferList视图
的获取查询集
方法中
因此,该方法返回的查询集是Offer.objects.all()
。
在返回之前,我想添加querysetq1
的available
列
q2=Offer.objects.all()
因此,我需要一种方法来使用这两个查询集q1和q2进行左连接,基本上设置输出查询集q2中可用的列
更新
我试图使q1查询集类似于q2,将q2字段手动添加到q1
q2=q1.values(available,Price=(F"offer_id__Price"),id=F("offer_id"))
(*我总结了这些值,但实际上我手动插入了6个值以使其与q2 queryset兼容)
以这种方式返回q2实现我想要的。。。但是我仍然想知道一种正确的方法,因为它看起来非常乏味,而且对于包含大量列的表来说,这应该是不可能的
最后更新
我想我明白了。添加OuterRef和子查询,并修改q1以将其转换为子查询
从django.db.models导入OuterRef,子查询
q1=q1.过滤器(offer_id=OuterRef(“pk”))
q2=Offer.objects.annotate(available=子查询(q.values(“available”))
请添加一些示例代码。@Glenn DJ如果还需要什么,请告诉我