Автор Тема: Ошибка при переопределении formfield_overrides  (Прочитано 1520 раз)

AdminUser

  • Team Lead
  • Юный джедай
  • *****
  • Сообщений: 65
  • Репутация +8/-0
    • Просмотр профиля
Кастомизирую админку и переопределяю formfield_overrides :

class NewAdmin(admin.ModelAdmin):

    fields = (
        ('City','Age'),
        'Sex',
        'Image'
    )

    formfield_overrides = {
        models.ImageField : {'widget' : ViewImageField}
    }

Как только переопределил formfield_overrides , сразу получаю ошибку:

Цитата:
TypeError at /admin/main/profile/1/change/
__init__() takes at least 4 arguments (1 given)
Request Method:   GET
Request URL:   http://127.0.0.1:8000/admin/main/profile/1/change/
Django Version:   1.11.17
Exception Type:   TypeError
Exception Value:   
__init__() takes at least 4 arguments (1 given)
Exception Location:   D:\django\hello\lib\site-packages\django\forms\fields.py in __init__, line 96
Python Executable:   D:\django\hello\Scripts\python.exe

Что за дела?
« Последнее редактирование: Марта 03, 2019, 02:17:06 pm от AdminUser »

DigitalMag

  • Юный джедай
  • **
  • Сообщений: 89
  • Репутация +6/-0
    • Просмотр профиля
Re: Ошибка при переопределении formfield_overrides
« Ответ #1 : Марта 03, 2019, 02:01:32 pm »
А как вылядит сам ViewImageField?

AdminUser

  • Team Lead
  • Юный джедай
  • *****
  • Сообщений: 65
  • Репутация +8/-0
    • Просмотр профиля
Re: Ошибка при переопределении formfield_overrides
« Ответ #2 : Марта 03, 2019, 02:02:48 pm »
А как выглядит сам ViewImageField?

class ViewImageField(BoundField):

    def __init__(self, form, field, name, textvalue = 'textvalue', css_cls = 'upload_image'):
        if textvalue == 'textvalue': textvalue = 'Define ' + textvalue + ' in ' + self.__class__.__name__
        self.text = textvalue
        self.css_class = 'class=' + css_cls

        super(ViewImageField, self).__init__(form, field, name)

    def label_tag(self, contents=None, attrs=None, label_suffix=None):

DigitalMag

  • Юный джедай
  • **
  • Сообщений: 89
  • Репутация +6/-0
    • Просмотр профиля
Re: Ошибка при переопределении formfield_overrides
« Ответ #3 : Марта 03, 2019, 02:09:44 pm »
Так вы вместо Widget-а подставляете BoundField! Гениально!

AdminUser

  • Team Lead
  • Юный джедай
  • *****
  • Сообщений: 65
  • Репутация +8/-0
    • Просмотр профиля
Re: Ошибка при переопределении formfield_overrides
« Ответ #4 : Марта 03, 2019, 02:22:06 pm »
Точно, а как мне тогда передать в ModelAdmin собственный Field?