Re: Cannot set values on a ManyToManyField which specifies an intermediary model.

72 views
Skip to first unread message

Arcady Chumachenko

unread,
Dec 10, 2012, 11:37:49 AM12/10/12
to django-russian
Вам же четко пишут, в чем проблема. Если есть промежуточная модель - надо использовать ее.


2012/12/10 Kamo Petrosyan <kamo.h...@gmail.com>
Всем доброго дня!
Весь необходимый код, чтобы разобраться, http://pastebin.com/YjRC7kYx

При сохранении вылетает ошибка
Cannot set values on a ManyToManyField which specifies an intermediary model. Use page.StyleRelationship's Manager instead.

Мне по сути нужно сохранить только Style. Доку перечитал вдоль и поперек и не понял где и что пропустил.

Help meeeeee!!!

--
 
 



--
Аркадий Чумаченко // Arcady Chumachenko
веб-проекты // web development
icq is no more, use google talk please
skype arcady.chumachenko
cell +7 911 701-0626 / +5 9398 545-24-98
www http://ilvar.tumblr.com/

Kamo Petrosyan

unread,
Dec 12, 2012, 1:31:20 AM12/12/12
to django-...@googlegroups.com
В том то и проблема, что "четко пишут" и решение задачи не всегда совпадают.

А вот и решение:
.....
            style = style_form.save(commit=False)
            style.save()

понедельник, 10 декабря 2012 г., 23:37:49 UTC+7 пользователь Arcady Chumachenko написал:

Arcady Chumachenko

unread,
Dec 12, 2012, 1:35:43 AM12/12/12
to django-russian
Хех, ну напишите тест и посмотрите, что оно реально сохранит и как. Результаты неприятно удивят :)


2012/12/12 Kamo Petrosyan <kamo.h...@gmail.com>

Kamo Petrosyan

unread,
Dec 12, 2012, 1:42:46 AM12/12/12
to django-...@googlegroups.com
Ну я бы не стал утверждать, если бы не протестил. Конечно, был вариант:

style = style_form.save(commit=False)
style.save_m2m()
style.save()

но всё прекрасно сохраняется и без m2m.
чудо?

среда, 12 декабря 2012 г., 13:35:43 UTC+7 пользователь Arcady Chumachenko написал:

Arcady Chumachenko

unread,
Dec 12, 2012, 12:16:10 PM12/12/12
to django-russian
Хм, и m2m-поля из формы сохраняются? точно? И при создании объекта тоже? Не должны просто, совсем никак, чисто физически - id объекта же еще неизвестен.


2012/12/12 Kamo Petrosyan <kamo.h...@gmail.com>

livskiy

unread,
Dec 12, 2012, 12:26:38 PM12/12/12
to django-...@googlegroups.com
https://github.com/django/django/blob/master/django/forms/models.py#L85

Когда commit is False, у формы появляется метод save_m2m, вызов которого должен обеспечить уже сам программер, когда настанет момент сохранить m2m.

12 декабря 2012 г., 23:16 пользователь Arcady Chumachenko <arcady.ch...@gmail.com> написал:
--
 
 

Kamo Petrosyan

unread,
Dec 12, 2012, 9:20:53 PM12/12/12
to django-...@googlegroups.com
В том то и дело, что m2m поля сохранять не нужно. С ними работаю после. А commit=False всё равно он требует. Пока даже не хочу разбираться почему.

четверг, 13 декабря 2012 г., 0:16:10 UTC+7 пользователь Arcady Chumachenko написал:
Reply all
Reply to author
Forward
0 new messages