NogerbekNurzhan: из-за того,что поле формы не m2m django пытается сохранить его сразу в модели (в момент .save()... А там несуразица... Вот и получается ошибка... Попробуйте переименовать поле.. и после того как выполните save формы - подкиньте вручную functions ... Что-то типа. my_model.functions.add(form.cleaned_data['custom_field_function']).... Конечно clean_function надо будет убрать :)
Как другой вариант - я бы попробовал поле у формы задать как м2м, а вот виджет - простой селект... Тогда по идее метод с clean_function должен сработать :)
NogerbekNurzhan: я предлагаю оставить изначальную логику как есть... но попробовать переопределить у класса формы метод clean_function, который будет возвращать список из одного объекта.. а дальше по идее save_m2m должен отработать... Будет что-то типа:
def clean_function():
super....
...
return self.cleaned_data['function']
Согласен. простейшим вариантом - написать свой файл шаблона /templates/admin/index.html
в качестве base у него будет {% extends "admin/index.html" %}
пример того как офомить свой html, что бы он выглядел как в админке - можно посмотреть в файле env/local/lib/python2.7/site-packages/django/contrib/admin/templates/admin/index.html
awesomeddd: как один из вариантов - да. так и поступить. если django-rest так защищает свое приложение других вариантов получить csrf токен - нет. можно не в куки. можно одним из параметров в хедере. но суть та же
Sama Samsonov: конечно. если допустим есть файл customer.html ( или любой другой html-файл, который наследуется от base.html) то при его рендере нужно подкинуть mid_menu ... иначе шаблонизатор не будет знать что нужно отрендерить :)
или действительно попробуй использовать inclusion tag очень удобная штука... что бы каждый раз не париться с контекстом.... в комметарии ниже я расписал какие есть пути решения твоей проблемы....
Sama Samsonov: Если есть контекст для куска html который нужно вставлять в разные участки кода, то есть 3 выхода:
1) прокинуть в каждую вьюху контекст (в данном случае меню) и рендерить с обычным инклудом
2) использоывать inclusion tag и в нем подготовить контекст
3) использовать контекст-процессоры (он в каждый запрос подкидывает указанный контекст) и тоже рендерить с обычным инклудом
ok. повторю вопрос (теперь с привязкой к конкретике) у тебя во вьюхе, которая рендерит index.html в контекст передается mid_menu (это должен быть итерируемый объект)
на мой взгляд inclusion tags нужны для удобной вставки (возможно и не однократной) фрагмента html-шаблона с каким-то определённым контекстом... если используется рендер без контекста (хардкоженные списки... меню и т.п.) можно просто воспользоваться инклудом...
Sama Samsonov: тогда скинь кусок html-шаблонов, в которых подключение меню идет (base.html, app.html ... и т.д.) думаю проблема в наследовании шаблонов или подключении инклудом
если у другого шаблона в качестве базового тоже base.html, то скорее всего дело в контексте (проверь - действительно ли в шаблон передается структура для меню?)
Станислав: Судя по докам https://docs.djangoproject.com/en/1.11/ref/forms/w... можно переопределить именно свойство template_name, попробуй именно его, а не метод get_template_names .... такое ощущение что django просто игнорит указанное проперти...