[英]Validating the type of django queryset related objects parameters
當例如通過相關對象過濾時,django是否提供一種方法來驗證django queryset中的模型類型? 假設我們有以下模型:
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)的所有書籍,盡管Book指的是作者,而不是Person。
當然,程序員有責任避免此類錯誤,但這是可能的。
這在Django 1.7中發生
p = Person.objects.all().first()
query = Book.objects.filter(author=p)
您真的嘗試過嗎? 據我說,它應該引發ValueError
“必須是Author實例”
現在,如果您想避免此錯誤,則需要使用一個id,像往常一樣,Moses有一個很好的答案來說明它是如何完成的。
如果author_id
與author_id
相同, person_id
可以直接使用id進行過濾 :
query = Book.objects.filter(author_id=p.id)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.