Django Admin - 根据单选按钮选择显示不同字段
我想在Django的管理后台做一些很酷的事情。
我有一个模型里面有一个图片字段(ImageField)。我希望我的其他同事可以选择是上传图片,还是直接粘贴图片链接。
就像这样:
<radio>: upload <radio>: link
根据他们的选择,相关的字段(也就是模型里的图片字段)会在这些单选按钮下面显示出来。
我该如何在Django的管理后台实现这个功能呢?
1 个回答
1
你需要在管理表单类中添加一个额外的字段,然后加一些JavaScript代码来在页面加载时显示或隐藏这个字段,还要添加一个事件处理器,用来显示上传文件或粘贴链接的字段。
这两个字段都需要设置为 blank=True
,然后你还需要添加一个 clean()
方法,确保其中一个字段有值,并且正确设置这个值。其实你可能更适合使用两个独立的字段。
你可以利用 Media 内部类,轻松地将 JavaScript 添加到页面,而不需要修改那个应用的 change_form.html 模板。可以查看这个链接: https://docs.djangoproject.com/en/1.7/topics/forms/media/,里面有关于如何为表单添加自定义 CSS 和 JavaScript 的例子。