Джанго Формы save_m2m - PullRequest
       25

Джанго Формы save_m2m

6 голосов
/ 23 декабря 2009

Привет, у меня есть модель, в которой есть от 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 ]

4 голосов
/ 09 января 2011

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

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

class Meta:
    model = YourModel
    exclude = ('m2mthroughfield',)
0 голосов
/ 23 декабря 2009

Вы не можете сохранить m2m "без сквозной таблицы"

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...