【发布时间】:2017-09-24 04:44:40
【问题描述】:
我一直在尝试生成一个用户未评论的图书列表,即他/她尚未为其撰写评论的图书。以下是我的 models.py 中的基本细节:
class book(models.Model):
name = models.CharField(max_length=100)
isbn = models.CharField(max_length=15)
author = models.CharField(max_length=120)
year = models.CharField(max_length=15)
genre_name = models.IntegerField()
rating = models.IntegerField()
description = models.CharField(max_length=2000)
img = models.ImageField()
def __str__(self):
return self.name
class reviews(models.Model):
name = models.CharField(max_length=150)
bookid = models.IntegerField()
review = models.CharField(max_length=750)
rating = models.IntegerField(default=0)
def __str__(self):
return self.name
所以,我一直在尝试首先获取用户评论过的书籍,如下所示:
books1 = reviews.objects.filter(name=username)
为了获得书籍的数据库,我正在执行以下操作:
allb = book.objects.all()
最初,我只是在range(1,132)中随机生成5个数字并将它们存储在数组randb中,如下所示:
randb = []
for i in range(0,5):
randb.append(randint(1,132))
然后将这些生成的数字链接到我在 HTML 部分的allb 中检索到的图书数据库。
我主要担心的是,当我这样做时,我最终会得到用户已经看过的书,只是因为我没有为此给出任何条件。
注意:我只想检索那些未被用户评论的图书 ID。
此外,我尝试执行以下操作以将其过滤掉:
books1 = reviews.objects.filter(name=username)
allb = book.objects.all()
randb = []
reviewed_books = books1.bookid /*I get error in this line: 'QuerySet' object has no attribute 'bookid'*/
count = 0
for i in range(0,132):
if i not in reviewed_books
randb.append(randint(1,132))
count = count + 1
if count == 5
break
我不知道如何使该行(上面代码中的注释行)工作。需要建议和一些代码 sn-p 才能使我的代码正常工作。
提前谢谢你:)
编辑:(我忘记了 if 语句后的冒号 ':')
books1 = reviews.objects.filter(name=username)
allb = book.objects.all()
randb = []
reviewed_books = books1.bookid /*I get error in this line: 'QuerySet' object has no attribute 'bookid'*/
count = 0
for i in range(0,132):
if i not in reviewed_books:
randb.append(randint(1,132))
count = count + 1
if count == 5:
break
【问题讨论】:
标签: python django django-models sqlite web-frameworks