У меня возникли проблемы с пониманием того, как статические файлы обрабатываются в Django. Я прочитал официальную документацию Django, а также несколько потоков, в том числе этот замечательный здесь:
Различия между STATICFILES_DIR, STATIC_ROOT и MEDIA_ROOT
Большинство людей определяют список STATICFILES_DIRS как список путей, по которым django будет искать дополнительные статические файлы помимо статической папки приложения.
Я это понимаю, но какое это имеет отношение к полям формы, которые я переопределяю в своем admin.py? Я заменил форму ManyToMany по умолчанию на виджет FilteredSelectMultiple в нескольких моих моделях администрирования, например так:
from django.contrib.admin.widgets import FilteredSelectMultiple
formfield_overrides = {
models.ManyToManyField: {'widget': FilteredSelectMultiple("User Names", is_stacked=False)}
}
Это отлично работает и дает переопределение виджета, которое я хотел: Снимок экрана функционального виджета
Однако, когда я определяю STATICFILES_DIRS в settings.py, чтобы включить мою корневую статическую папку следующим образом:
STATICFILES_DIRS = (
os.path.join(BASE_DIR, 'static/'),
)
Это нарушает мое переопределение и по умолчанию возвращается к исходной форме поля ManyToMany: Снимок экрана сломанного виджета
STATIC_ROOT не определен в файле settings.py, поскольку мы не планируем использовать функцию сбора статики. Мы планируем хранить/ссылаться на наши статические файлы в корневой статической папке. Также в наших settings.py у нас есть:
STATIC_URL = '/static/'
Я не понимаю, как эти настройки для работы со статическими файлами мешают приведенному выше formfield_override. Я был бы признателен за некоторое понимание этого, чтобы я мог найти способ подойти к этой проблеме.
Спасибо!