这些是我的相关模型..
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
。我做错了什么?
答案 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
(或者你正在寻找的搜索变量)。