[英]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.