Django Form指定用于字段的表



对于Movie对象中的字段cast,我想使用生成的Cast_movie表,即movies_cast_movie,但我得到一个错误,即movies_cast不存在

电影/模型.py从django.db导入模型从.型号导入*

class Movie(models.Model):
cast = models.ManyToManyField('Cast_movie', related_name='cast_movies')
class Cast_movie(models.Model):
movie = models.ForeignKey('movies.movie', on_delete = models.CASCADE, blank=True, null=True)
cast = models.ForeignKey('casts.cast', on_delete = models.CASCADE, blank=True, null=True)
role =  models.ForeignKey('casts.role', on_delete = models.CASCADE, blank=True, null=True)
def __str__(self):
return self.cast

如何指定要使用的表?

如果您想设置ManyToMany关系的表名,您可以使用through选项,并且由于您的through模型(Cast_movie)中有两个以上的关系,您必须通过through_fields选项只选择其中两个。

class Movie(models.Model):
cast = models.ManyToManyField('casts.cast', through="Cast_movie", through_fields=("movie", "cast",),  related_name='cast_movies',)

class Cast_movie(models.Model):
movie = models.ForeignKey('movies.movie', on_delete = models.CASCADE, blank=True, null=True)
cast = models.ForeignKey('casts.cast', on_delete = models.CASCADE, blank=True, null=True)
role =  models.ForeignKey('casts.role', on_delete = models.CASCADE, blank=True, null=True)
class Meta:
db_table="whatever_name_you_want_for_your_table"

def __str__(self):
return self.cast

在这里,我们将Cast_movie模型设置为多人关系表,并使用db_table字段设置表名。

最新更新