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

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

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



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



Подозреваю, что редактирование ManyToManyField в .save() не соотвествует концепции django. Посоветуйте как это корректно реализовать.
  • Вопрос задан
  • 4130 просмотров
Подписаться 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.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы
Strikt Москва
от 100 000 до 180 000 ₽
ITK academy Саратов
от 75 000 ₽
Sim-Ba Pay Санкт-Петербург
от 180 000 ₽