Django对查询关系的错误行为

时间:2012-10-25 14:47:01

标签: django

最近我在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:       返回[]     其他:       a1.bs.all()

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

任何人都可以帮助我吗?

提前谢谢

1 个答案:

答案 0 :(得分:1)

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

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