2013-05-09 2 views
0

Здесь работает пример по добавлению пользовательских JS код (любой HTML действительно) к каждому из инлайнов: http://djangosnippets.org/snippets/1261/Пользовательские JS для RadioSelect встраивает в Django администратора

Но я не могу воспроизвести его для RadioSelect полей типа в админ.

Модель model.py:

class Work(models.Model): 
    client = models.ForeignKey(Client) 

    IMAGE = 'IM' 
    VIDEO = 'VI' 
    CONTENT_TYPE = (
     (IMAGE, 'Image'), 
     (VIDEO, 'Video'), 
    ) 

    content_type = models.CharField(max_length=2, 
            choices=CONTENT_TYPE, 
            default=IMAGE) 

И admin.py:

class WorkInline(admin.TabularInline): 
    fields = ('content_type',) 
    radio_fields = {"content_type": admin.VERTICAL} 
    model = Work 

Я не могу понять, как переопределить render() для radio_fields (как это делается для TextInput в примере выше), чтобы ввести свой код в них. Или может быть, есть более простой способ?

Спасибо за помощь.

+0

Can Я каким-то образом наследую виджет «radio_fields»? – jevgenij

ответ

0
  1. Вы должны назвать файл с момента forms.py, вы должны создать класс вроде этого:

    class WorkForm(forms.ModelForm): 
    
        class Meta: 
         model = Work 
    
        def __init__(self, *args, **kwargs): 
         super(WorkForm, self).__init__(*args, **kwargs) 
         self.fields['content_type'].widget = ColorPickerWidget() 
    
  2. Не забудьте импортировать виджет

+0

Просто прочтите Django docs и в нем говорится: '' formfield_overrides' не позволит вам изменять виджет в полях отношений, которые имеют 'raw_id_fields' или' radio_fields'. Это потому, что 'raw_id_fields' и' radio_fields' подразумевают собственные собственные виджеты «. Поэтому я боюсь, что это невозможно сделать через механизм виджетов. – jevgenij