在Django Taggit中保存标签时出错

时间:2017-12-20 17:24:16

标签: django django-taggit

我将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模型的模型形式。 请让我知道我做错了什么。

1 个答案:

答案 0 :(得分:1)

  

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

以上错误表示数据库中有多条记录与您使用get()查询时传递的特定参数相关,例如

  

Model.objects.get(FIELD_NAME = some_param)

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

因此,不应使用get(),而应使用filter(),它将返回多个记录。如

  

Model.objects.filter(FIELD_NAME = some_param)

请阅读有关如何在django here中进行查询的信息。