首页 文章

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

提问于
浏览
0

重复问题Django-Taggit in Edit Form . 但是,答案对我不起作用 .

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

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

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

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

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

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

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

1 回答

  • 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

相关问题