【问题标题】:Custom JS for RadioSelect inlines in Django adminDjango admin 中 RadioSelect 内联的自定义 JS
【发布时间】:2013-05-09 23:13:01
【问题描述】:

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

但我无法为管理员中的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

我不知道如何为radio_fields 覆盖render()(就像上面示例中为TextInput 所做的那样)以将我的代码注入其中。或者可能有一些更简单的方法?

感谢您的帮助。

【问题讨论】:

  • 我能以某种方式继承radio_fields 小部件吗?

标签: django django-forms django-admin


【解决方案1】:
  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. 别忘了导入小部件

【讨论】:

  • 只需阅读 Django 文档,它会说“formfield_overrides 不会让您更改已设置 raw_id_fieldsradio_fields 的关系字段上的小部件。那是因为 raw_id_fields 和 @987654326 @ 暗示他们自己的自定义小部件。”所以恐怕不能通过widget机制来完成。
猜你喜欢
  • 2011-10-17
  • 2018-02-22
  • 2018-10-11
  • 2011-01-11
  • 1970-01-01
  • 2013-11-17
  • 2010-12-12
  • 2015-11-20
  • 2011-04-16
相关资源
最近更新 更多