Проверьте, существует ли система Many to Many в django?

У меня есть две модели,

Model University:
      name = models.CharField(max_length=120)
Model Students:
      name = models.CharField(max_length=120)
      wishlist = models.ManyToManyField(University, blank=True)

В основном это список пожеланий, пользователь может добавить университет в свой список пожеланий, и если он нажмет на иконку сердца, мне нужно удалить список пожеланий:

Вот мой код:

   student = request.user.student
   university = University.objects.get(id=pk)
   if university.student_set.exists():
       student.wishlist.remove(university)
   else:
       student.wishlist.add(university)

Когда пользователь1 добавил университет1 в список пожеланий, пользователь2 не может добавить университет1 в список пожеланий, я не знаю, где ошибка! Пожалуйста, подскажите, любой студент может добавить любой университет в список пожеланий (это требование)

Я думаю, что проблема заключается в выражении if

university.student_set.exists()

Это не проверяет конкретного студента. Должно быть так:

university.student_set.filter(id=student.id).exists()

Так что в целом это условие будет :

student = request.user.student
university = University.objects.get(id=pk)
if university.student_set.filter(id=student.id).exists():
   student.wishlist.remove(university)
else:
   student.wishlist.add(university)

Мы можем предотвратить получение связанного студента пользователя в случае, если мы хотим удалить университет из списка желаний. Обычно это более безопасно, так как User, у которого нет связанного студента, не вызовет ошибку:

university = University.objects.get(id=pk)
if university.student_set.filter(user=request.user).exists():
    Student.wishlist.through.objects.filter(
        university=university,
        student__user=request.user
    ).delete()
else:
    request.user.student.wishlist.add(university)

Мы можем немного повысить эффективность пути .remove(...) за счет отсутствия выборки .student пользователя, и поэтому реализуем это как:

Вернуться на верх