过滤外键表的属性

时间:2016-06-19 19:47:19

标签: django django-models

这些是我的相关模型..

class Books(models.Model):

    name = models.CharField(max_length=120)
    author = models.CharField(max_length=120)
    edition = models.CharField(max_length=120)

    class Meta:
       unique_together = ('name', 'edition',)

    def __str__(self):
       return self.name



class Items(models.Model):

    book = models.ForeignKey(Books)
    seller = models.ForeignKey(User,related_name = 'item_seller')
    buyer = models.ForeignKey(User, related_name = 'item_buyer', null=True,blank= True)
    requestee = models.ManyToManyField(User,related_name = 'item_requestee',blank= True)
    cost_price = models.DecimalField(max_digits=8, decimal_places=2)
    sale_price = models.DecimalField(max_digits=8, decimal_places=2)
    sold = models.BooleanField(default=False)
    date_added = models.DateTimeField(auto_now=False, auto_now_add=True)

    def __str__(self):
       return self.book.name

这是视图功能的一部分,我试图过滤外键表的属性

 book_item = Items.objects.filter(book__name==q)

其中q是来自用户的字符串。

但我收到错误 - book__name not defined。我做错了什么?

1 个答案:

答案 0 :(得分:1)

您正在使用boolean operator foo==bar,您应该使用assignment operator foo=bar

不要这样做:

 book_item = Items.objects.filter(book__name==q)

取而代之的是:

book_item = Items.objects.filter(book__name=q)

调用过滤器时,您希望它查看已创建的所有Items,并返回Items Book name = (equal) {{1} }} q(或者你正在寻找的搜索变量)。