簡體   English   中英

驗證Django queryset相關對象參數的類型

[英]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_idauthor_id相同, person_id可以直接使用id進行過濾

query = Book.objects.filter(author_id=p.id)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM