Django IntegrityError 多对多字段

Django IntegrityError manytomany field

我正在尝试在我的 Django 应用程序中实现主题标签 我有一个带有这样字段的消息模型

hash_tags = models.ManyToManyField(HashTag, related_name='message_hash_tags')

这是 HashTag 模型

    hash_tag = models.CharField(max_length=140, primary_key=True) 

我正在为这样的消息设置主题标签

            hash_tags_list = Functions.extract_hashtags(message["message"])
            hash_tags = [HashTag.objects.get_or_create(hash_tag=ht) for ht in hash_tags_list]
            messageObj.hash_tags.set(hash_tags)
            messageObj.save()

但是这个出错了

django.db.utils.IntegrityError: insert or update on table "messaging_message_hash_tags" violates foreign key constraint "messaging_message_ha_hashtag_id_068959e9_fk_messaging"
DETAIL:  Key (hashtag_id)=((<HashTag: HashTag object (skills)>, True)) is not present in table "messaging_hashtag".

不过我可以在我的 messaging_hashtag table 中找到 HashTag object (skills):

SELECT * FROM messaging_hashtag;
 hash_tag 
----------
 skills

get_or_create returns 一个包含对象的元组和一个关于对象是否已创建的标志,例如:(obj, created)

要解决此问题,只需从元组中提取 obj。例如在结果上使用 [0]

hash_tags = [ HashTag.objects.get_or_create(hash_tag=ht)[0] for ht in hash_tags_list ]