Django Form укажите таблицу, которую нужно использовать для поля
Для поля cast
в объекте Movie
я хочу использовать таблицу Cast_movie
, которая генерируется movies_cast_movie
вместо этого я получаю ошибку, что movies_movie_cast не существует
movies/models.py from django.db import models from .models import *
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
как нашу таблицу отношений manytomany, и задаем имя таблицы с помощью поля db_table.