gpt4 book ai didi

python - Django get_or_create 抛出完整性错误

转载 作者:太空宇宙 更新时间:2023-11-03 15:50:52 29 4
gpt4 key购买 nike

我很困惑为什么 get_or_create() 方法应该在这里抛出错误,我的序列化器中有这个:

def create(self, validated_data): user, _ = User.objects.get_or_create(id=validated_data['message']['from_user']['id'], defaults=validated_data['message']['from_user'])

chat, created = Chat.objects.get_or_create(id=validated_data['message']['chat']['id'],
defaults=validated_data['message']['chat'])

message, _ = Message.objects.get_or_create(message_id=validated_data['message']['message_id'],
defaults={'message_id': validated_data['message']['message_id'],
'from_user': user,
'date': validated_data['message']['date'],
'chat': chat,
'text': validated_data['message']['text']})
update, _ = Update.objects.get_or_create(update_id=validated_data['update_id'],
defaults={'update_id': validated_data['update_id'],
'message': message})

return update

它表示:{u'from': {'id': [u'具有此 id 的用户已存在。']}, u'chat': {'id': [u'聊天对象该 ID 已存在。']}}

我检查了其他线程,但他们给出的解决方案都是我的代码中已有的,所以我真的很困惑

最佳答案

问题似乎是序列化器无法将 id 隐式转换为整数,即使它们在模型中被指定为整数。因此,每当它尝试查找具有给定 id 的聊天或用户时,它都找不到(可能使用字符串 id),但尝试使用给定 id 创建一个新对象将使数据库(在本例中为 postgreSQL)抛出完整性错误错误。添加 id = serializers.IntegerField() 解决了问题

关于python - Django get_or_create 抛出完整性错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41317822/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com