修改预取对象

时间:2018-09-12 10:24:07

标签: django

是否可以在不使用save()的情况下修改预取对象?

class First(models.Model):
field = models.IntegerField()

class Second(models.Model):
first = models.ForeignKey(First, related_name='seconds')
some = models.IntegerField()

qs = First.objects.filter(field=12).prefetch_related('seconds')
qs[0].seconds.all()[0].some = 999
qs[0].seconds.all()[0] == 999 # should be True

更新:

我发现了问题所在。首先需要评估查询集过滤后的len(qs)。 我想稍微改变一下我的问题。我可以在不打入数据库的情况下修改外键关系吗?

qs = First.objects.filter(field=12).prefetch_related('seconds')
len(qs)
print(len(qs[0].seconds.all())) # output: 5
qs[0].seconds.all()[0].first_id = 2    
print(len(qs[0].seconds.all())) # output: 4

1 个答案:

答案 0 :(得分:0)

代替做

f.seconds.all()[0].some = 999
f.seconds.all()[0] == 999 # should be True

执行此操作。

first_object = f.seconds.all()[0]
first_object.some = 999
first_object.some == 999 #true