将查询集与新创建的对象组合

时间:2018-12-07 07:02:37

标签: django django-queryset

有一个新对象(尚未保存):

obj = MyObject()
q = MyObject.objects.all()

有什么办法可以合并objq

2 个答案:

答案 0 :(得分:1)

可能您可以将其与chain

结合使用

我在django shell中尝试过此操作:

In [1]: from itertools import chain
    ...: comment = Comment()
    ...: all_comments = Comment.objects.all()  # there's 1 comment in my db: <QuerySet [<Comment: Comment object>]>
    ...: combined = list(chain([comment], all_comments))
    ...: print(combined)
[<Comment: Comment object>, <Comment: Comment object>]

答案 1 :(得分:0)

如果未保存obj,则无法合并(假设您要在此处使用queryset)。这里q是一个惰性查询。 When it is evaluated,那么它将带所有包含obj的对象(如果它是在评估前创建的)。

但是您可以在评估q之后将其附加到对象列表中(如果您不想保存obj,无论如何)。像这样:

q_list = list(q)
q_list.append(obj)