【发布时间】:2010-10-13 00:25:20
【问题描述】:
是否可以覆盖 TabularInline 管理表单中字段的 html 命名,使其不包含破折号?
我正在尝试应用 here 获得的知识来创建具有自动完成功能的 TabularInline 管理表单。
除了 Django 坚持将 tabularinline 查询集中的字段命名为以下行之外,这一切都有效:
[model]_set-[index]-[field]
因此,如果我的模型是 TravelLogClient 并且我的外键字段是公司,则表格内联查询集中三个条目的 HTML 表单中的字段将是:
travellogclient_set-0-company
travellogclient_set-1-company
travellogclient_set-2-company
问题在于 javascript 不喜欢带有破折号的标识符。所以 javascript 失败,自动完成功能不起作用。
这只是表格内联表单的问题!如果我在非表格管理表单字段上使用Jannis' autocomplete example,它就可以正常工作,因为字段名称在 HTML 和 javascript 中没有“..._set-[index]-...”部分。
我没有向 django 的源代码提交一个补丁来更改 contrib.forms.forms.py 和 contrib.forms.formsets.py 上的下划线的破折号,而是在我看来,有可能以某种方式覆盖行为。
如果做不到这一点,让 html_name 中的破折号变成下划线的最简单方法是什么?
提前致谢!
【问题讨论】:
-
您是如何尝试使用 javascript 访问这些字段的?
-
正是我的想法:包含破折号的属性名称在 JS 中完全没问题,只是您必须使用 object['the-prop'] 而不是错误的 object.the-道具
标签: python django django-admin django-forms