【问题标题】:Error saving tags in Django Taggit在 Django Taggit 中保存标签时出错
【发布时间】:2017-12-20 17:24:16
【问题描述】:

我有我的 models.py

class TaggedActionsBefore(GenericTaggedItemBase):
    tag = models.ForeignKey(Tag, related_name="%(class)s_emotionsbefore")


class TaggedActionsAfter(GenericTaggedItemBase):
    tag = models.ForeignKey(Tag, related_name="%(class)s_emotionsafter")


class ActionJournal(models.Model):

    situation = models.TextField()
    actions_before = TaggableManager(blank=True, through=TaggedActionsBefore, help_text="")
    actions_after = TaggableManager(blank=True,  through=TaggedActionsAfter, related_name="actionsafter", help_text="")

我在尝试保存标签时收到以下错误

get() returned more than one Tag -- it returned 2!

通过一个表单,它是ActionJournal 模型的模型表单。 请让我知道我做错了什么。

【问题讨论】:

    标签: django django-taggit


    【解决方案1】:

    get() 返回了多个 Tag -- 它返回了 2 个!

    上面的错误说明你在使用get()查询时传递的具体参数相关的DB中有不止一条记录,比如

    Model.objects.get(field_name=some_param)

    为避免将来出现此类错误,您始终需要根据您的架构设计进行查询。在您的情况下,您设计了一个具有 M2M 关系的表,因此该字段显然会有多条记录,这就是您收到上述错误的原因。

    因此,您应该使用 filter() 而不是使用 get(),它会返回多条记录。比如

    Model.objects.filter(field_name=some_param)

    请阅读如何在 django here 中进行查询。

    【讨论】:

    • 我没有使用get,它来自错误出现的django taggit,这是因为我通过TAGGIT_CASE_INSENSITIVE = True更改了区分大小写
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-22
    • 1970-01-01
    相关资源
    最近更新 更多