ORM проблема с Django - PullRequest
       13

ORM проблема с Django

0 голосов
/ 17 марта 2020

Я хочу два списка книг, 1 из книг, которые уже «понравились» пользователю aka «myBooks», и другой список всех других книг, «otherBooks».

Вместо этого я могу получить только 1 книгу в первом списке (первый понравился), и после этого список не меняется (он даже не исчезает из второго списка, исключая любые понравившиеся книги).

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)
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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...