0

最近我在 Django 中发现了一个奇怪的行为。然后,我开始认为问题出在我做这项工作的方式上。

假设我们有 2 个模型

class A(models.Model):
    attr1 = models.CharField()
...

class B(models.Model):
    a = models.ForeignKey("A",
        related_name = "bs"
        blank = True,
        null = True)

所以,如果我有一些 B 的项目,没有与 A 的关联,比如 b1、b2、b3,当我设置 A 的新实例时,比如 a1,如果我查询

a.bs.all()
b1, b2 and b3 are returned.

它出什么问题了?当我创建一个新实例时,它不应该产生任何关系。我知道 b1,b2 和 b3 没有关系,但默认情况下它们不能关联到任何新实例。

有人知道如何以 Django 方式进行吗?

我知道如果 a1.id: return [] else: a1.bs.all() 我可以做到这一点

但我认为这不是正确的做法。

谁能帮我?

先感谢您

4

1 回答 1

1

这是 Django 中的一个错误,目前被标记为“需要设计决策”:

https://code.djangoproject.com/ticket/14615

于 2012-10-25T15:02:05.243 回答