Python 如何正确访问django数据库中的数据?
我一直在尝试生成一个没有被用户审阅的书籍列表,即他/她没有为其撰写审阅的书籍。以下是mymodels.py的基本细节:Python 如何正确访问django数据库中的数据?,python,django,django-models,sqlite,web-frameworks,Python,Django,Django Models,Sqlite,Web Frameworks,我一直在尝试生成一个没有被用户审阅的书籍列表,即他/她没有为其撰写审阅的书籍。以下是mymodels.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
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)
randb = []
for i in range(0,5):
randb.append(randint(1,132))
为了获得这些书的数据库,我做了以下工作:
allb = book.objects.all()
最初,我只是在范围(1132)
中随机生成5个数字,并将它们存储在数组randb
中,如下所示:
books1 = reviews.objects.filter(name=username)
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语句后面的冒号“:”)
您可以尝试查找所有书籍,然后从该结果中排除已由用户审阅的书籍:
book.objects.exclude(id__in=reviews.objects.filter(name=username).values_list('id', flat=True)
您可以尝试查找所有书籍,然后从该结果中排除已由用户审阅的书籍:
book.objects.exclude(id__in=reviews.objects.filter(name=username).values_list('id', flat=True)