Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何正确访问django数据库中的数据?_Python_Django_Django Models_Sqlite_Web Frameworks - Fatal编程技术网

Python 如何正确访问django数据库中的数据?

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

我一直在尝试生成一个没有被用户审阅的书籍列表,即他/她没有为其撰写审阅的书籍。以下是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_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)