对于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字段设置表名。