Настройката на STATICFILES_DIRS кара моята администраторска замяна на джаджа да изчезне

Имам проблеми с разбирането как се обработват статичните файлове в 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 в нашите настройки.py, тъй като не планираме да използваме функцията за събиране на статични данни. Планираме да запазим/позоваваме нашите статични файлове в главната статична папка. Също така в нашия settings.py имаме:

STATIC_URL = '/static/'

Не разбирам как тези настройки за работа със статични файлове пречат на formfield_override по-горе. Ще бъда благодарен за малко прозрение по този въпрос, за да мога да намеря начин да подходя към този проблем.

Благодаря ти!


person Yamen Alghrer    schedule 12.11.2019    source източник


Отговори (1)


Разбрах причината за моя проблем. Пропуснах тази част в документацията на Django, която обяснява STATICFILES_FINDERS: STATICFILES_STORAGE Документация

въведете описание на изображението тук

Оказва се, че производственият ми сървър първо намираше статичните файлове във външната ми основна папка, които не бяха актуални. Това обяснява защо не виждах промените си. Ще преконфигурирам начина, по който боравя със статични файлове, за да гарантирам, че външната основна статична папка, която изглежда моят производствен сървър, винаги има най-новите статични файлове чрез функцията collectstatic

person Yamen Alghrer    schedule 15.11.2019