【问题标题】:Can I override the html_name for a tabularinline field in the admin interface?我可以覆盖管理界面中 tabularinline 字段的 html_name 吗?
【发布时间】: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.pycontrib.forms.formsets.py 上的下划线的破折号,而是在我看来,有可能以某种方式覆盖行为。

如果做不到这一点,让 html_name 中的破折号变成下划线的最简单方法是什么?

提前致谢!

【问题讨论】:

  • 您是如何尝试使用 javascript 访问这些字段的?
  • 正是我的想法:包含破折号的属性名称在 JS 中完全没问题,只是您必须使用 object['the-prop'] 而不是错误的 object.the-道具

标签: python django django-admin django-forms


【解决方案1】:

Paolo 和 Guðmundur 是对的。我根据 Guðmundur 的建议修改了我在 javascript 中的用法,现在一切正常 - 无需 django 干预。

对不起,精神错乱...

谢谢!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-27
    • 2011-08-09
    • 2012-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多