Задать вопрос
meteozond
@meteozond

Django: изменение ManyToManyField в методе save()?

При созданении модели нужно проанализировать содержимое полей и внести изменения в ManyToManyField.



Если save вызывается напрямую (во view или из другой модели) — никаких проблем. Но при вызове из admin — результат работы save заменятся результатом обработки form.



Подозреваю, что редактирование ManyToManyField в .save() не соотвествует концепции django. Посоветуйте как это корректно реализовать.
  • Вопрос задан
  • 4123 просмотра
Подписаться 3 Оценить Комментировать
Решения вопроса 1
savados
@savados
Нет никакого «результата обработки form», любая ModelForm всегда вызывает метод .save модели. И неважно, в админке она, или еще где.

Проблема в другом, и тут не помешал бы код метода .save.

Похожая проблема может быть при оверрайде save в ModelForm, там нужно явно вызывать метод .save_m2m, но это пальцем в небо, нужно увидеть код.

Не вижу, как редактирование ManyToManyField в .save противоречит концепции Django, по-моему, совершенно нормальное дело (хоть и малость странное).
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
frol
@frol
Линуксоид
Честно говоря долго вникал в вопрос, при сохранении формы всё-равно вызывается .save() у модели. Как способ решения проблемы посмотрите в сторону pre_save, post_save
Ответ написан
Комментировать
@adsinger
Как вариант, задать manytomany через through и перегузить сейв в объекте связки, для данных запросить саму модель через related manager.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы