是否可以在不使用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
答案 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