Как связать несколько одинаковых моделей related_name в django
У меня есть две модели Movie и Actor
class Actor(models.Model):
id = models.UUIDField(default=uuid.uuid4, primary_key=True, editable=False)
name = models.CharField(name="name", max_length=2000, blank=True, null=True)
class Movie(models.Model):
id = models.UUIDField(default=uuid.uuid4, primary_key=True, editable=False)
name = models.CharField(name="name", max_length=2000, blank=True, null=True)
actors = models.ManyToManyField(Actor, related_name='movie_actor')
Теперь я хотел бы позволить пользователям добавлять своих любимых актеров, например
class MyUser(AbstractUser):
actors = models.ManyToManyField(Actor, related_name='user_actor')
Теперь я хотел бы сделать ответ для каждого фильма, чтобы киноманы могли сказать, есть ли в этом фильме один/несколько их любимых актеров или нет?
Вы можете просто отфильтровать объекты Actor по двум параметрам, чтобы получить всех актеров в your_movie
, которым благоприятствует your_user
.
Actor.objects.filter(movie_actor = your_movie, user_actor = your_user)
Если вы просто хотите проверить, существуют ли любимые актеры, добавьте метод exists()
.
Actor.objects.filter(movie_actor = your_movie, user_actor = your_user).exists()
Чтобы определить, есть ли в фильме один или несколько любимых актеров данного пользователя:
has_favorite_actors = movie.actors.filter(user_actor=user).exists()