django 如何在其他类中存储其他类中的更多对象字段

4xrmg8kj  于 2022-11-18  发布在  Go
关注(0)|答案(1)|浏览(102)

我一直在Django文档中寻找我的问题,但没有找到解决方案。我的问题是在Api Pannel中,我无法从“ActorsAndDirectors”类插入更多对象到“Movie”类的“cast”字段中。我只能插入一个。如何转换cast字段,以便我可以从“ActorsAndDirectors”类插入多个对象到“Movie”类中
这是密码

class ActorsAndDirectors(models.Model):
    name = models.CharField(max_length=32, blank=False, null=False)
    surname = models.CharField(max_length=32, blank=False, null=False)
    role = models.CharField(max_length=11, blank=False, null=False)

    def __str__(self):
        return f"{self.name} {self.surname}"

class Movie(models.Model):
    title = models.CharField(max_length=50, blank=False, null=False, unique=True)
    description = models.TextField(max_length=400)
    cast = models.ForeignKey(ActorsAndDirectors, on_delete=models.CASCADE)
    premiere = models.DateField()
    updated = models.DateTimeField()
    slug = models.SlugField()

    def number_of_ratings(self):
        return Rating.objects.filter(movie=self).count()
    
    def avg_rating(self):
        score = 0
        ratings = Rating.objects.filter(movie=self)
        for rating in ratings:
            score +=rating.stars
        if len(ratings) > 0:
            return score/len(ratings)
        else:
            return 0

    def __str__(self):
        return f"{self.title}, ({self.premiere})"

`
我在Django文档中查找了一些列表字段,但是没有好的结果。我在寻找如何转换字段的帮助,或者可能是我的问题的一些其他解释

o2rvlv0m

o2rvlv0m1#

你正在寻找的是一个Many to Many关系。在那里许多演员和导演可以参与许多不同的电影。
我想补充一下,当查询数据库时,查找字符串的速度比较慢。也许你应该为你的ActorsAndDirectors角色字段选中这个choices选项。
如果您稍后尝试筛选导演或演员,这会很有帮助。另一个选项是Table和FK。

相关问题