如何在 Django 中关联多个相同模型 related_name

How to relate multiple same models related_name in django

我有两个模型 MovieActor:

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')

现在,我想为每部电影做出回应,以便电影可以判断这部电影是否有 one/more 个他们最喜欢的演员。

您可以简单地通过两个参数过滤 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()