gpt4 book ai didi

django - 手动创建 Django QuerySet 或者手动将对象添加到 QuerySet

转载 作者:行者123 更新时间:2023-12-03 10:52:15 25 4
gpt4 key购买 nike

基本上我需要一种优雅的方式来执行以下操作:-

obj1 = Model1.objects.select_related('model2').get(attribute1=value1)
obj2 = Model1.objects.select_related('model2').get(attribute2=value2)
model2_qs = QuerySet(model=Model2, qs_items=[obj1.model2,obj2.model2])

我可能想得不对,但是做下面这样的事情对我来说似乎是无限愚蠢的。:-
obj1 = Model1.objects.select_related('model2').get(attribute1=value1)
model2_qs = Model2.objects.filter(pk=obj1.model2.pk)

是的,我最终需要一个 Model2 的 QuerySet 供以后使用(特别是传递给 Django 表单)。

在上面的第一个代码块中,即使我使用 filter而不是 get我显然会有一个 Model1 的 QuerySet。在我的情况下,反向查找可能并不总是可能的。

最佳答案

如果您只是想通过一些 SQL 无法表示的复杂过程来创建您选择的项目的查询集,您总是可以使用 __in运算符(operator)。

wanted_items = set()
for item in model1.objects.all():
if check_want_item(item):
wanted_items.add(item.pk)

return model1.objects.filter(pk__in = wanted_items)

您显然必须根据您的情况进行调整,但它至少应该为您提供一个起点。

关于django - 手动创建 Django QuerySet 或者手动将对象添加到 QuerySet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3397437/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com