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.

Вернуться на верх