django是否提供了一種驗證django查詢集中模型類型的方法,例如通過相關對象進行過濾?比方說,我們有以下型號:驗證django查詢集相關對象的類型參數
class Person(models.Model):
name = models.CharField(max_length=5)
class Author(models.Model):
name = models.CharField(max_length=25)
class Book(models.Model):
name = models.CharField(max_length=5)
author = models.ForeignKey(Author)
而且
p = Person.objects.all().first()
query = Book.objects.filter(author=p)
過濾所有的書籍,auhtor_id等於給定爲person_id(P_ID),雖然書是指作者,而不是人。
當然,這是程序員避免這種錯誤的責任,但它是可能的。
這發生在Django 1.7
當你運行該代碼時會發生什麼? –
至少在django 1.7它過濾器通過author_id = p.pk – pteo
@pteo通過更有意義的維護你的代碼,而不是默認的版本,顯然不一致的版本記住,這兩個模型甚至沒有相關的第一位 –