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".

То я могу найти HashTag object (skills) в моей messaging_hashtag таблице:

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

get_or_create возвращает кортеж, содержащий объект и флаг о том, был ли объект создан или нет, так что что-то вроде: (obj, created)

Чтобы исправить это, просто извлеките obj из кортежа. Например, используя [0] на результате:

hash_tags = [ HashTag.objects.get_or_create(hash_tag=ht)[0] for ht in hash_tags_list ]
Вернуться на верх