Django создание модели на основе данных формы с отношением M к M - PullRequest
0 голосов
/ 11 января 2020

Мне интересно, можно ли сократить действия при создании какой-либо модели на основе данных формы, где у нас есть отношения «многие ко многим». Мы не можем сохранить все данные сразу, потому что M to M должен знать об идентификаторе модели, и это проблема, потому что у нас нет такого идентификатора при первом сохранении модели.

Так что я сделать это следующим образом:

  1. Создание модели на основе простых полей для получения идентификатора
  2. Вручную установите поле M в M и сохраните его снова

для меня это выглядит так, как будто у нас есть 2 запроса к БД (возможно, я ошибаюсь, поэтому исправьте меня, пожалуйста)

Можно ли сократить эти шаги до 1?

Кстати. Я думаю, что ModelForm должен помочь, но мне интересно, если это возможно сделать на низком уровне с простыми django .Forms. Кроме того, я не уверен, что ModelForm не делает то же самое.

вот пример кода (очень простой, потому что я не хочу публиковать много кода, потому что это сделает чтение тяжелее)

        # receive the form cleaned data
        data = form.cleaned_data

        # create a model with the simple fields to receive the ID
        b = Book(title=data['title'], summary=data['summary'], isbn=data['isbn'])
        b.save()

        # populating the relations
        b.genre.set(data['genre']) # Many to Many field
        b.author = data['author'] # One to Many field

        b.save()

Спасибо за любую помощь.

...