Я пытаюсь получить список книг, которые были добавлены пользователем в избранное. Я могу получить список всех избранных от пользователя
myfavorites = Favorite.objects.filter(user=thisUser)"
, который вернет правильный список из 3 избранных пользователем1, но затем, когда я попытаюсь использовать этот список, чтобы получить список книг с
"myBooks" : Book.objects.filter(favorites=myfavorites),
Вместо этого я получаю только один объект (первую книгу, которую пользователь добавил в избранное). Как правильно запросить это?
Проблема в моих представлениях или моих моделях?
views.py
def books(request):
if 'userid' not in request.session:
return redirect('/')
else:
num = request.session['userid']
thisUser = User.objects.get(id=num)
myfavorites = Favorite.objects.filter(user=thisUser)
context = {
"user" : thisUser,
"otherBooks" : Book.objects.exclude(favorites=myfavorites),
"myBooks" : Book.objects.filter(favorites=myfavorites)
}
return render (request, 'app1/books.html', context)
models.py
class User(models.Model):
first = models.CharField(max_length=30)
last = models.CharField(max_length=30)
email = models.CharField(max_length=40)
password = models.CharField(max_length=40)
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
objects = UserManager()
class Book(models.Model):
title = models.CharField(max_length=45)
author = models.CharField(max_length=30)
desc = models.TextField()
user = models.ForeignKey(User, related_name="books")
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
objects = BookManager()
class Favorite(models.Model):
favorite = models.BooleanField()
user = models.ForeignKey(User, related_name="favorites")
book = models.ForeignKey(Book, related_name="favorites")
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)