1

我的模型如下所示:

class Model1(models.Model):
  ...

class Model2(models.Model):
    model1 = models.ForeignKey(Model1)
    attr = models.IntegerField(default=1)

从外壳,我看到以下行为:

>>> m1.model2_set.all()[0].attr += 1
>>> m1.model2_set.all()[0].attr
1
>>> m2 = m1.model2_set.all()[0]
>>> m2.attr += 1
2

知道为什么会发生这种情况吗?

4

1 回答 1

0

看起来您正在从数据库中检索相同的 Model2 实例。m1 和 m2 似乎附加了相同的 Model2,您可以通过model2_set.all()[0]. 您可以像这样验证:

>>> m2.model2_set.all()[0] == m1.model2_set.all()[0] # should be true 
于 2012-09-29T23:18:14.163 回答