Привет, у меня есть модель, в которой есть 2 поля «многие ко многим». одно является стандартным полем m2m, в котором не используются сквозные таблицы, тогда как другое немного сложнее и имеет сквозную таблицу. Я использую форму Django forms.modelform для отображения и сохранения форм. Код, который я должен сохранить в форме,
if form.is_valid():
f = form.save(commit=False)
f.modified_by = request.user
f.save()
form.save_m2m()
Когда я пытаюсь сохранить форму, я получаю следующую ошибку:
Невозможно установить значения в ManyToManyField, который указывает промежуточную модель.
Я знаю, что это происходит, когда я делаю form.save_m2m() из-за сквозной таблицы. Я бы хотел сказать Django, чтобы он игнорировал поле m2m со сквозной таблицей, но все равно сохранял поле m2m без сквозной таблицы. Затем я могу вручную сохранить данные для сквозного поля таблицы.
Благодарность
2 ответа
Если у вас есть модель с несколькими полями, одно выполняется со сквозной таблицей, а другое — обычным отношением «многие ко многим» без сквозной таблицы. Вы по-прежнему можете использовать save_m2m() для сохранения обычного файла. Просто добавьте сквозные поля в список исключений в форме.
Добавьте в свой класс формы:
class Meta:
model = YourModel
exclude = ('m2mthroughfield',)
Нельзя сохранить м2м "без сквозной таблицы"
Данные, которые вы хотите сохранить, хранятся в сквозной таблице (и только в сквозной таблице)
Похожие вопросы
Новые вопросы
django
Django - это серверная платформа веб-приложений с открытым исходным кодом, написанная на Python. Он разработан для сокращения усилий, необходимых для создания сложных веб-сайтов и веб-приложений, управляемых данными, с особым упором на меньшее количество кода, отсутствие избыточности и более явное, чем неявное.