Django使模型字段名称成为链接

时间:2010-05-11 19:54:42

标签: django django-models django-admin django-forms

我想要做的是在模型字段的名称上有一个链接。因此,当我使用管理界面填写表单时,我可以访问一些信息。

我知道这不起作用,但显示了我想做的事情

class A(models.Model):
    item_type = models.CharField(max_length=100, choices=ITEMTYPE_CHOICES, verbose_name="<a href='http://www.quackit.com/html/codes'>Item Type</a>")

其他选项是在字段旁边添加说明。

我甚至不确定从哪里开始。

2 个答案:

答案 0 :(得分:1)

可悲的是,这比乍一看要难得多。在您定义verbose_name的点与{{ field.label_tag }}模板中的admin/includes/fieldset.html之间的时间点之间,对该字符串进行了大量操作。基本上无论你做什么,字符串都会被强制回到unicode并最终在label_tag中转义。尝试使用mark_safeSafeUnicode甚至|safe模板过滤器都无法阻止发生转义。

这意味着你有三个选择:

  1. 在django表单内部进行很多的黑客攻击,一直通过一个SafeUnicode字符串。

  2. admin/includes/fieldset.html模板中手动构建字段的标签标记。请注意,标签上有很多重要的属性,如id,for,class等。

  3. 创建一个模板过滤器,用于解析label标签内的字符串,并将其转换为链接。

  4. 选项三如果你对正则表达式有任何好处,那么实际上可能是最简单的。

答案 1 :(得分:0)

这应该在模板中真正处理。

这是一种方法......

您可以制作一个名为“描述”的整个其他模型,然后将“项目类型”作为该表中的条目。

从那里,您可以查看永久链接装饰器http://docs.djangoproject.com/en/dev/ref/models/instances/#the-permalink-decorator,它允许您为任何给定的“描述”对象创建永久链接。

最后,请查看http://docs.djangoproject.com/en/1.1/ref/contrib/admin/#overriding-admin-templates以修改管理员模板。在编辑class A对象的位置,可以将锚点插入到该Description对象的永久链接中。

你要做的事情绝对是可能的。你只需要重新组织你的想法。

祝你好运!