Так же, как в качестве отправной точки, вам необходимо переопределить метод ModelAdmin.get_form () , который позволит вам изменить тип поля ввода, которое Django по умолчанию использует для вашего поля image
,Вот как это должно выглядеть:
from django.forms import Select
class YourModelAdmin(admin.ModelAdmin):
def get_form(self, request, obj=None, **kwargs):
# 1. Get the form from the parent class:
form = super(YourModelAdmin, self).get_form(request, obj, **kwargs)
# 2. Change the widget:
form.base_fields['your_image_field'].widget = Select(choices=(
('', 'No Image'),
('path/to/image1.jpg', 'Image 1'),
('path/to/image2.jpg, 'Image 2'),
))
# 3. Return the form!
return form
У вас все еще будут другие соображения - например, путь / местоположение самих изображений (размещение их в settings.MEDIA_ROOT
, вероятно, будет самым простым, илипо крайней мере, первый шаг в попытке сделать эту работу).Я также могу предположить, что вам может потребоваться более сложное представление этого поля, чтобы оно отображало миниатюру фактических изображений (см. @ ответ Чече, где он предлагает select2 - хотя это немного сложнее,так как вам нужно будет создать собственный виджет).
Все это говорит о том, что нужно просто изменить поле формы, которое использует администратор, чтобы оно предлагало поле раскрывающегося списка / выбора, а не поле для загрузки файла. Вот как вы этого добьетесь.