Django ModelForm with ManyToManyВ Fields Джошуа Кен
Вбудований ORM Django має поле ManyToMany, яке ви можете вибрати. Я думаю, що типовий мультиселектор відстійний, і це підтвердили багато кінцевих користувачів, описуючи, як селектор змушує їх помилятися під час редагування цих конкретних полів. Тут я опишу дві речі. По-перше, як змінити віджет цього поля на щось більш смачне. Далі я опишу деякі зависання, на які слід бути обережним, щоб стежити, коли ви використовуєте це поле з ModelForms, особливо під час збереження.

Відношень багато-до-багатьох краще уникати, якщо це можливо. Вони брудні і змушують весь ваш код обробляти кілька екземплярів відношення. Список інгредієнтів в їжі може бути представлений у взаємозв'язку "багато до одного", якщо ви не хочете повторно використовувати ці інгредієнти. Тоді у вас є два варіанти; або дозволити копіювання, або використовувати поле "багато-до-багатьох". Оскільки ці інгредієнти можуть бути змінені, і це потрібно розподіляти до всіх страв, до складу яких вони входять, я обрав останнє рішення.
Моделі та код форми
Ось основний код моделі їжі, який також доступний як суть models.py.
Все це базове моделювання. Інгредієнти мають назву та стосунки до дієти та харчових уподобань. Харчування може містити багато інгредієнтів, назву та набір категорій меню. 1
Тепер давайте поглянемо на форму додавання/редагування інгредієнта. Це багатофункціональний ModelForm, також доступний як зміст forms.py.