Django 中角色的电影演员表

Movie cast with characters in Django

提问人:O Tal Antiquado 提问时间:11/12/2023 更新时间:11/12/2023 访问量:29

问:

所以,我正在用 Django 做经典电影应用程序(我喜欢这个框架!),我觉得我撞到了树桩。

所以,我有我的电影模型:

class Movie(models.Model):  
    TitlePRT = models.CharField(max_length=100)
    TitleORG = models.CharField(max_length=100)
    TitleAlt = models.CharField(max_length=100)
    Poster = models.ImageField(upload_to=posterPath, max_length=100)
    Synopsis = models.TextField()
    Year = models.IntegerField()
    DubStudio = models.ForeignKey("Studio", on_delete=models.CASCADE)
    Trivia = models.TextField()
    CreatedBy = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, related_name="+")
    CreatedAt = models.DateTimeField(auto_now=False, auto_now_add=True)
    Modifiedby = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, related_name="+")
    ModifiedAt = models.DateTimeField(auto_now=True, auto_now_add=False)

我的 Actor 模型:

class Actor(models.Model):
    Bio = models.TextField()
    Name = models.CharField(max_length=50)
    FullName = models.CharField(max_length=50)
    DateOfBirth = models.DateField()
    Country = models.TextField(max_length=100)
    Nationality = models.TextField(max_length=50)
    Debut = models.ForeignKey("Movie", on_delete=models.CASCADE)
    CreatedBy = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, related_name="+")
    CreatedAt = models.DateTimeField(auto_now=False, auto_now_add=True)
    ModifiedBy = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, related_name="+")
    ModifiedAt = models.DateTimeField(auto_now=True, auto_now_add=False)
    ClaimedBy = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, related_name="+")

最后,我的 Cast 模型:

class Cast(models.Model):
    Movie = models.ForeignKey("Movie", on_delete=models.CASCADE)
    Actor = models.ForeignKey("Actor", on_delete=models.CASCADE)
    Character = models.TextField(max_length=50)
    Observations = models.TextField(max_length=50)

现在,我可以通过 Django 管理员添加内容,但这很尴尬,因为我无法在电影表单中添加演员表。我必须去演员表,一个接一个地去一个角色

我已经搜索了有关自定义管理表单之类的内容,但我有点困惑。

是否可以在“电影”表单中创建一个表单字段来添加演员表,最好包含三个元素:一个可以在其中选择演员,一个文本字段用于键入角色,另一个文本字段用于添加一些观察?

或者有没有一种不那么复杂的方法来组织这些数据?

python django django-models django-forms

评论


答:

1赞 willeM_ Van Onsem 11/12/2023 #1

是的,你可以创建一个 TabularInline [Django-doc]Cast

class CastInline(admin.TabularInline):
    model = Cast

然后将其注入到 for 中:ModelAdminMovie

class MovieAdmin(admin.ModelAdmin):
    # …
    inlines = [CastInline]

评论

1赞 O Tal Antiquado 11/12/2023
难以置信!正是我需要的!谢谢!