Django-更新模型对象

时间:2016-07-09 13:33:36

标签: django django-queryset

我有一个模特: -

class Model(models.Model):
    a = models.BooleanField(default=False)
    time = models.DateTimeField(auto_now_add=True)

触发all查询后: -

objs = Model.objects.all().order_by('time')

我需要更新nth索引处的对象。 N可以是任何东西。

obj[0].a = True
obj[0].save()

但价值不会更新。为什么呢?

3 个答案:

答案 0 :(得分:0)

def set_nth_a_true(n, queryset):
   obj_ = queryset[n]
   obj_.a = True
   obj_.save()


objs = Model.objects.all().order_by('time')
set_nth_a_true(3, objs)

这应该有效,我测试了它

答案 1 :(得分:0)

objs = Model.objects.all()
objs[0].a = True  # Queries the database
objs[0].save()  # And again queries db before save

更多信息为什么它会在文档中发生:

https://docs.djangoproject.com/ja/1.9/topics/db/queries/#when-querysets-are-not-cached

答案 2 :(得分:0)

我刚遇到同样的问题,我可以确认“问题”与QuerySets行为有关。如果需要更新对象,则必须将它们存储为单独的Model对象,如:

objs = Model.objects.all().order_by('time')
to_update = objs[0]
to_update.a = True
to_update.save()