【发布时间】:2011-08-02 21:52:00
【问题描述】:
我在 Django 管理员中有一个表格内联模型。我需要其中 1 个字段在创建后不可更改,但将其设置为只读(通过 readonly_fields)可以正常工作,但在单击“添加另一个项目”而不是下拉菜单时将该字段变为标签。
有没有办法让字段保持只读,但仍允许使用正确的字段输入创建新项目?
谢谢!
托马斯
编辑:通过自定义小部件设法弄清楚
class ReadOnlySelectWidget(forms.Select):
def render(self, name, value, attrs=None):
if value:
final_attrs = self.build_attrs(attrs, name=name)
output = u'<input value="%s" type="hidden" %s />' % (value, flatatt(final_attrs))
return mark_safe(output + str(self.choices.queryset.get(id=value)))
else:
return super(ReadOnlySelectWidget, self).render(name, value, attrs)
如果有值,它只会将其变为隐藏,并非在所有情况下都有效(仅适用于 1 个只读字段)。
【问题讨论】:
-
将您的解决方案添加为答案,以便问题显示为已回答:)
标签: django django-admin