django - CheckboxSelectMultiple 以酥脆的形式,自定义数据属性
问题描述
我想覆盖 CheckboxSelectMultiple 以便我可以使用以下逻辑为表单提供 data- 属性:
class MySelect(forms.Select):
def create_option(self, name, value, label, selected, index, subindex=None, attrs=None):
option = super(forms.Select, self).create_option(name, value, label, selected, index, subindex, attrs)
if value:
for k,attr in self.attrs.items():
# if it has a data attr in it
if k[:4] == 'data':
#instantiate a new object and add the data attr to the option
current_object = self.choices.queryset.model.objects.get(pk=value)
option['attrs'].update({
k: getattr(current_object, attr)
})
return option
这适用于非脆皮形式,但由于脆皮从不调用此方法,它不会以这种方式工作。我想覆盖 CheckboxSelectMultiple create_option 方法。有什么优雅的方法可以解决这个问题而不必覆盖整个表单字段渲染过程?我尝试使用自定义 html,但是(就我的技能而言)要获得具有选中属性的正常工作 CheckboxSelectMultiple 非常复杂。
这是我到目前为止所做的:
class MyCheckboxSelectMultiple(forms.CheckboxSelectMultiple):
def create_option(self, name, value, label, selected, index, subindex=None, attrs=None):
option = super(forms.CheckboxSelectMultiple, self).create_option(name, value, label, selected, index, subindex, attrs)
if value:
for k,attr in self.attrs.items():
# if it has a data attr in it
if k[:4] == 'data':
#instantiate a new object and add the data attr to the option
current_object = self.choices.queryset.model.objects.get(pk=value)
option['attrs'].update({
k: getattr(current_object, attr)
})
return option
解决方案
推荐阅读
- python - E: 找不到包 python-pygraphviz E: 包 'ipython' 没有安装候选
- python - TypeError:'int'和'function'的实例之间不支持'<='
- django - 如何通过 Django 模型过滤项目
- ios - 你可以在 Xcode 中有一个空的 UILabel 吗?
- ios - 有没有在不使用 AppCenter 的情况下添加 iOS UI (XCUI) 测试管道?
- android - Espresso 不执行点击对话框
- c - 使用库 connman(连接管理器)和函数 connman_service_get_type 查找网络连接类型
- java - 如何修复此错误“org.apache.commons.cli.MissingArgumentException: Missing argument for option: gs”?
- python - 如何将同一列中的行与熊猫数据框中的类别相加 - python
- python - 模拟按键数字 1 - 999 的程序