Привет, у меня есть модель, в которой есть 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 без сквозной таблицы. Затем я могу вручную сохранить данные для сквозного поля таблицы.

Благодарность

6
John 23 Дек 2009 в 17:20

2 ответа

Если у вас есть модель с несколькими полями, одно выполняется со сквозной таблицей, а другое — обычным отношением «многие ко многим» без сквозной таблицы. Вы по-прежнему можете использовать save_m2m() для сохранения обычного файла. Просто добавьте сквозные поля в список исключений в форме.

Добавьте в свой класс формы:

class Meta:
    model = YourModel
    exclude = ('m2mthroughfield',)
4
Eric 9 Янв 2011 в 14:46

Нельзя сохранить м2м "без сквозной таблицы"

Данные, которые вы хотите сохранить, хранятся в сквозной таблице (и только в сквозной таблице)

0
Jiaaro 23 Дек 2009 в 23:57