私は、ユーザーによってレビューされていない本のリスト、つまりユーザーがレビューを書いていない書籍のリストを生成しようとしています。ここに私のmodels.pyからの重要な詳細されていますdjangoデータベースから適切にデータにアクセスするには?
books1 = reviews.objects.filter(name=username)
そして取得する:
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
だから、私は、最初のユーザーが、このような何かを検討している本を取得しようとしてきました私はランダムにrange(1,132)
とに5つの数字を生成し、最初
allb = book.objects.all()
:図書のデータベースは、私は次のことをやっています、配列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
私はその行(上記のコードではコメント行)を動作させる方法がわかりません。私のコードを動作させるための提案といくつかのコードスニペットが必要です。
は、事前にありがとう:)
EDIT:(私はコロンを忘れてしまった ':' 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