gpt4 book ai didi

python - 使用 get_or_create 时返回 MultipleObjects

转载 作者:太空宇宙 更新时间:2023-11-04 06:42:46 26 4
gpt4 key购买 nike

我有这个简洁的代码来为当前用户获取或创建对话:

c, created = Conversation.objects.get_or_create(
message__sender=request.user,
content_type=get_content_type(request.POST['ct']),
object_id=request.POST['oid'],
defaults={'subject': request.POST['subject']}
)

问题出在这一行 message__sender=request.user;当有不止一条消息时,我会收到 MultipleObjectsReturned 异常。

我想出了这个丑陋的解决方案,让它按我想要的方式工作:

try:
c = Conversation.objects.filter(
message__sender=request.user,
content_type=get_content_type(request.POST['ct']),
object_id=request.POST['oid']
)[0]
except IndexError:
c = Conversation.objects.create(
subject=request.POST['subject'],
content_type=get_content_type(request.POST['ct']),
object_id=request.POST['oid']
)

知道如何修复第一个更干净的版本吗?

最佳答案

引发和捕获异常没有错!这是另一种选择

try:
result = Model.objects.get(...)
except Model.DoesNotExist:
result = Model.objects.create(...)

关于python - 使用 get_or_create 时返回 MultipleObjects,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25456977/

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