Светильники - Работа со многими ко многим промежуточным моделям - PullRequest
0 голосов
/ 21 октября 2019

Я тренируюсь на Django и работаю над фильмом в блоге, и у меня есть проблемы с моими приборами, которые я убираю из api themoviedb. Мне интересно, как правильно вставить ManyToMany с посреднической моделью. Вот мое текущее состояние (удаление ненужных полей):

class Movie(models.Model):
    tmdb_id = models.AutoField(primary_key=True)
    original_title = models.CharField(max_length=255)
    actors = models.ManyToManyField(Person, through='Actor', related_name="movie_cast")
    staffs = models.ManyToManyField(Person, through='Staff', related_name="movie_staff")

class Actor(models.Model):
    person = models.ForeignKey(Person, on_delete=models.CASCADE)
    movie = models.ForeignKey(Movie, on_delete=models.CASCADE)
    role = models.CharField("person's role in a movie", max_length=40)

class Staff(models.Model):
    person = models.ForeignKey(Person, on_delete=models.CASCADE)
    movie = models.ForeignKey(Movie, on_delete=models.CASCADE)
    department = models.CharField(max_length=30)
    job = models.CharField("person's job in a movie", max_length=40)

Что я делаю сейчас, так это вставляю вручную модель.actor или model.staff, как это, в прибор. Изменить: это создается в команде Django, которая создает .json, а затем вставляется с loaddata.

{"model": "blog.actor",
 "fields": {
     "person": people['id'],
     "movie": movie['id'],
     "role": people['character'],
     }
}

Я пытаюсь передать этот dict или просто дополнительное поле в поле movie.actor, но для этого требуется intвнешний ключ.

Я делаю правильно или есть лучший способ сделать это?

Спасибо.

...