1

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

例如,如果您在诸如“化学”之类的内容或演讲中的关键点上做笔记让我们说“Django”,那么这些就是文本文档。因此,您希望它们在TEXTTAG 中。

那么,当您为这种事情制作表单时,您会使用什么表单域?例如,下意识的做法是简单地制作一个文本区域字段,然后用逗号分隔不同的标签。现在,这可能容易出现很多问题,我只想知道解决这个问题的最佳方法是什么?基本上,验证数据输入的简单方法?forms.ChoiceField将是解决问题的最佳方法还是有其他更好的方法?

4

1 回答 1

3

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

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

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

于 2013-08-09T13:33:00.993 回答