如何制作标签?

Posted

技术标签:

【中文标题】如何制作标签?【英文标题】:how to make tags? 【发布时间】:2011-03-12 06:18:07 【问题描述】:

如果我有一个问答系统,并且我想添加一个标签功能,那么对于每个问题我都应该有一些标签,用逗号分隔(就像 *** 一样):

    我想为此创建一个单独的类模型,其中包含问题的外键 在表单中,我希望用户能够添加多个标签,以逗号分隔,并且在提交表单时,我希望将标签存储在一个表中:每个标签一个注册

我应该在表格中使用什么,以便以逗号分隔的标签保存在数据库中,每个标签注册一个? (便于搜索)

谢谢

【问题讨论】:

【参考方案1】:

django-taggit

更新:阅读文档以查看标签输入字符串如何生成标签,http://github.com/alex/django-taggit/blob/master/docs/forms.txt

【讨论】:

hmmm...我不敢用它,我是初学者,怕短时间内看不懂代码 似乎是非维护 django-tagging 的一个很好的替代品。【参考方案2】:

我同意你最好使用可重复使用的标记应用程序,但如果你不怕弄脏你的手,请查看Django contenttypes framework

【讨论】:

【参考方案3】:

是的.. contenttypes 框架是创建标签的最佳方式。

class TagName(models.Model):
    name = models.CharField(max_length=255)

    class Meta:
        pass


class Tag(Model):
    tag = models.ForeignKey(TagName, related_name="tag_objects")
    content_type = models.ForeignKey(ContentType, blank=True, null=True)
    object_id = models.TextField(ugettext('object id'), blank=True, null=True)
    content_object = GenericForeignKey('content_type', 'object_id')

    class Meta:
        pass

【讨论】:

【参考方案4】:

根据 2020 年,这是有效的简单 django 解决方案: 模型.py:

from django.db import models
from django.contrib.auth.models import User

class ExamplePost(models.Model):
    Title = models.CharField(max_length=100)
    Tags = models.ManyToManyField('Need', related_name='plants')
    entry_date = models.DateTimeField(auto_now_add=True)
    def __str__(self):
        return f'self.species'

class ExampleTag(models.Model):
    Name = models.CharField(max_length=100)
    Link = models.URLField(max_length=1000, null=True, blank=True, default="None")
    def __str__(self):
        return f'self.title'

在example.html中:

  <div class="card-body">
      <h2 class="card-title"> ExamplePost.title </h2>
      <h5> Tags : </h5>
          <ul class="list-group list-group-horizontal-sm">
              % for Tag in ExamplePost.tags.all %
              <p class="p-2 bg-light text-warning">
                  <h3><span class="badge badge-pill badge-warning"> ExampleTag.name  </span></h3>
                  </p>
              % endfor %
          </ul>
  </div>

【讨论】:

以上是关于如何制作标签?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 PlotWidget 内制作标签?

如何使用 Eureka 制作多行标签

程序在tkinter中运行时如何制作新标签?

如何在逻辑图上制作标签(使用 ggplot/ggplotly 制作)显示 % 与小数

我如何在 KivyMD 中制作多行标签?

如何使用滚动视图制作可滚动标签?