Пользовательский виджет AdminURLFieldWidget администратора Django пропускает кнопку Обзор - PullRequest
0 голосов
/ 02 июля 2018

Я пытаюсь настроить администратора 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)

Однако в форме отображается поле без кнопки `Просмотр:

enter image description here

Я хотел бы иметь что-то вроде значения по умолчанию:

enter image description here

Итак, как я могу заставить кнопку Browse появляться в моем пользовательском виджете?

1 Ответ

0 голосов
/ 26 июля 2018

Привет снова потерянному сообществу Django,

Вот и я снова с собственным ответом. Проблема в том, что final_attrs должно быть final_attrs = {'type': 'file'}.

Пожалуйста (снова).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...