Django Taggit将标签呈现为自定义形式的对象

时间:2014-11-14 16:55:04

标签: python django forms django-taggit

重复问题Django-Taggit in Edit Form。但是,答案对我来说并不适用。

我在表单中使用Django Taggit。该表单由启用了Django Taggit的对象实例填充。

在我的模板中,表单标记输入字段值的设置如下:

value="{{ form.tags.value|default_if_none:"" }}"

这会产生粗略格式的字符串值:

value="[<TaggedItem: foo tagged with bar>]"

如果我使用基本Django表格渲染(即{{form}})渲染表单,则正确呈现标记字段值(即&#34; tag1,tag2&#34;)。奇怪的是,这与Django-Taggit in Edit Form的海报所经历的相反。对于他们来说,{{form}}并没有正确地呈现价值,但对我来说,它是。

为什么我的表单和Django之间存在这种差异?如何在自定义表单模板中正确呈现标记值?

1 个答案:

答案 0 :(得分:0)

我有一个解决方案,感到hacky但有效。

实例化表单时,修改标记的初始状态:

form = YourModelForm(request.POST or None, instance=your_model_instance, initial={
    'tags' : edit_string_for_tags(your_model_instance.tags.get_query_set())
})

edit_string_for_tags()get_query_set()是Django Taggit的一部分。

注意:您需要导入edit_string_for_tags()。即from taggit.utils import edit_string_for_tags