Stackoverflow就像django的标签系统一样?

时间:2013-08-09 13:22:38

标签: django django-forms

我想要创建的是一个资源站点。基本上,您可以通过链接添加书籍和视频等资源。现在,对于任何满足各种资源的资源站点,您需要标记它们以了解您正在使用的资源类型。

例如,如果您在化学或关键点上做了一些注释,可以说" Django",那么这些就是文本文档。因此,您希望它们位于TEXT标签内。

那么,当你为这种事物制作一个表格时,你会使用什么形式字段?例如,通过简单的方法是简单地制作文本区域字段,然后通过逗号分隔不同的标记。现在,这可能会遇到很多问题,我只是想知道解决这个问题的最佳方法是什么?基本上,一种验证数据输入的简单方法? forms.ChoiceField会成为解决问题的最佳方法,还是还有其他更好的方法?

1 个答案:

答案 0 :(得分:3)

https://www.djangopackages.com/grids/g/tagging/是您最好的选择,最明确的是https://github.com/alex/django-taggit。如果您想运行自己的标记系统,请查看源代码以获取一些想法。

编辑:在表单中显示此内容的最简单方法是使用ModelMultipleChoiceField。这允许您为单个资源选择多个标记,并处理服务器端验证并转换为实际的Tag实例。但是,我认为大多数人会同意这个选项看起来很可怕,如果有大量可能的标签,它肯定不是用户友好的。

如果您使用的是jquery,另一种选择是使用Django_select2。这是我个人在类似情况下使用的,它可以很好地处理大量可能的标签。 Django_select2是jQuery的Select2插件的一个瘦包装器,带有一些额外的功能(最值得注意的是AutoViewAutoModelSelect2Field)。这提供了文本字段和选择列表之间的混合,允许您搜索所有标记并轻松选择多个标记。有关您可以实现的目标的示例,请参阅http://ivaynberg.github.io/select2/