首页 > 解决方案 > 多对多关系 - 电影 - 角色 - 演员

问题描述

我不确定描述这个概念模型的最佳解决方案是什么。我知道如何创建多对多关系,但不知道该关系中的角色。你能告诉我最好的方法是什么吗?

非常感谢。

在此处输入图像描述

标签: django

解决方案


您正在寻找through=…模型 [Django-doc]。因此,我们可以创建三个模型,并定义模型ManyToManyField所在的Role位置through

class Movie(models.Model):
    title = models.CharField(max_length=45)
    release_date = models.DateField()
    synopsis = models.TextField()
    duration = models.DurationField()

class Person(models.Model):
    first_name = models.CharField(max_length=45)
    last_name = models.CharField(max_length=45)
    birth_date = models.DateField()
    movies = models.ManyToManyField(Movie, through='Role', related_name='actors')

class Role(models.Model):
    person = models.ForeignKey(Person, on_delete=models.CASCADE)
    movie = models.ForeignKey(Movie, on_delete=models.CASCADE)
    role = models.CharField(max_length=45)

推荐阅读