Я пытаюсь настроить администратора Django, и мне нужно создать пользовательский URL, отображаемый для записи FileField
в шаблоне change_form
. Таким образом, прибегая к помощи, я нашел следующий рецепт, дополненный настройкой поля изображения, найденного здесь . Вот мой код:
class MyAdminURLFieldWidget(URLInput):
template_name = 'admin/widgets/url.html'
def __init__(self, attrs=None):
final_attrs = {'class': 'vURLField'}
if attrs is not None:
final_attrs.update(attrs)
super(MyAdminURLFieldWidget, self).__init__(attrs=final_attrs)
def get_context(self, name, value, attrs):
context = super(MyAdminURLFieldWidget, self).get_context(name, value, attrs)
context['current_label'] = _('Currently:')
context['change_label'] = _('Change:')
context['widget']['href'] = smart_urlquote('/DownloadView/' + str(value.instance.id) + '/attachment/') if value else ''
return context
class FilesAdmin(admin.ModelAdmin):
list_display = ('id', '_animalid', '_filename', '_filedesc', '_ispublic', 'extra_info')
search_fields = ('subjectid__animalid',)
list_per_page = 50
def formfield_for_dbfield(self, db_field, **kwargs):
if db_field.name == 'filename':
request = kwargs.pop("request", None)
kwargs['widget'] = MyAdminURLFieldWidget
return db_field.formfield(**kwargs)
else:
return super(FilesAdmin, self).formfield_for_dbfield(db_field, **kwargs)
Однако в форме отображается поле без кнопки `Просмотр:
Я хотел бы иметь что-то вроде значения по умолчанию:
Итак, как я могу заставить кнопку Browse
появляться в моем пользовательском виджете?