用于RadioSelect的自定义JS在Django管理员中内联

时间:2013-05-09 23:13:01

标签: django django-forms django-admin

以下是向每个内联添加自定义JS代码(确实是任何HTML)的工作示例: http://djangosnippets.org/snippets/1261/

但是我无法在admin中为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()的{​​{1}}(就像上面示例中为radio_fields所做的那样)以将代码注入其中。或者可能有一些更简单的方法?

感谢您的帮助。

1 个答案:

答案 0 :(得分: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. 不要忘记导入小部件