Подтвердить что ты не робот

Django: Как сохранить данные на ManyToManyField?

У меня есть вопрос относительно следующей модели. Я хочу заполнить ManyToManyField из views.py вместо того, чтобы делать это из Admin.

Но как добавить данные в поле genres, которое является ManyToManyField?

views.py

content = Movie_Info(
                                id              = m_id,
                                title           = data[0].get('title'),
                                overview        = data[0].get('overview'),
                                release_date    = data[0].get('release_date'),
                            )
content.save()

models.py

class Movie_Info_genre(models.Model):
    genre = models.CharField(max_length=100)

class Movie_Info(models.Model):
    id             = models.IntegerField(primary_key=True)
    title          = models.CharField(max_length=100, blank=True, null=True)
    overview       = models.TextField(blank=True, null=True)
    release_date   = models.CharField(max_length=10, blank=True, null=True)
    genres         = models.ManyToManyField(Movie_Info_genre)
4b9b3361

Ответ 1

Используйте метод добавления для связанных полей:

# using Model.object.create is a shortcut to instantiating, then calling save()
myMoveInfo = Movie_Info.objects.create(title='foo', overview='bar')
myMovieGenre = Movie_Info_genre.objects.create(genre='horror')
myMovieInfo.genres.add(myMoveGenre)

В отличие от изменения других полей, обе модели должны существовать в базе данных до этого, поэтому перед добавлением отношений "многие ко многим" вы должны вызвать save. Так как добавление сразу влияет на базу данных, вам не нужно впоследствии сохранять ее.