我一直在尝试生成一个没有被用户审阅的图书列表,即他/她没有为其撰写审阅的图书。以下是我的型号.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
我不知道如何使那一行(上面代码中的注释行)工作。需要建议和一些代码片段,使我的代码工作。你知道吗
提前感谢:)
编辑:(我忘了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
您可以尝试查找所有书籍,然后从该结果中排除已由用户审阅的书籍:
相关问题 更多 >
编程相关推荐