2012-10-25 29 views
0

最近我在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,當我設置一個的新實例,說a1,如果我查詢

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

它有什麼問題?當我創建一個新實例時,它不應該產生任何關係。我知道b1,b2和b3沒有關係,但是它們不能被默認關聯到任何新的實例。

任何人都知道如何以Django的方式進行?

我知道我可以做的伎倆 如果a1.id: 回報[] 其他: a1.bs.all()

但我認爲這是不這樣做的正確方法。

任何人都可以幫助我嗎?

預先感謝您

回答