@PTaHHHa

Как реализовать ArrayField в виде списка в Django forms?

В моём проекте возникла необходимость в сборе массива чаров. Но стандартный виджет для массива в питоне мне не подходит (нужно элементы массива выводить в виде списка, а не через запятую + возможность динамического добавления/удаления элементов) (приложил скриншот примера). Для админки я нашёл такое решение, но не знаю как быть с формами для шаблонов. Смотрел на наборы форм (formsets), но во всех примерах идёт создание новых объектов модели, а мне нужно создание/удаление элементов массива. Кто-нибудь сталкивался с такой проблемой? after.png
  • Вопрос задан
  • 567 просмотров
Решения вопроса 1
@Nuchimik
Т.к. ты используешь ArrayField, значит и postgres скорее всего. Ты можешь попробовать посмотреть django.contrib.postgres.forms.SimpleArrayField, но скорее всего там не такой виджет, который тебе нужен.

Я бы предложил тебе написать свой кастомный виджет со своим шаблоном. Далее, написать несколько эндпоинтов для добавления/удаления/редактирования элементов массива (если хочешь в фоне это делать, если нет, то и одного хватит, или же сохранять вместе с основной формой). В этом же виджете можешь написать парсинг значения, чтобы привести его к виду, который будет понятен БД. Если фоном будешь обновлять, придется еще пару скриптов на js/jQuery (или что у тебя на проекте) написать.

Ну или проще вариант, просто взять виджет, который используется в решении, которое ты нашел

Можно конечно сделать таблицу, как предложил Dr. Bacon, и может быть, в твоем случае, это будет правильней, быстрее, и наименее геморройно, но это лишние запросы к БД и вполне возможно избыточность
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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