sqlite 如何确保我创建的任何对象都保存在我的django项目中?

sqyvllje  于 2023-02-05  发布在  SQLite
关注(0)|答案(2)|浏览(132)

我正在开发一个简单的聊天应用程序,它可以创建聊天室供用户加入。你输入你的聊天室名称,它会检查这个聊天室是否已经存在。如果已经存在,你会被重定向到这个聊天室。如果不存在,它会创建一个新的聊天室,保存这个聊天室,然后重定向到那里。我遇到的问题是如何保存创建的新聊天室。
我一直收到一个“DoesNotExist”错误。“房间匹配查询不存在。”下面是代码:

def check_view(request):
    room_entity = request.POST['room_name']
    username = request.POST['username']

    if Room.objects.filter(name=room_entity).exists():
        return redirect('/' + str(room_entity) + '/?username=' + str(username))
    else:
        new_room = Room.objects.create(name=room_entity)
        new_room.save()
        Room.save(new_room)
        return redirect('/' + str(room_entity) + '/?username=' + str(username))

def room(request, room_info):
    username = request.GET.get('username')
    room_details = Room.objects.get(name=room_info)
    return render(request, 'room.html', {
        'username': username,
        'room': room_info,
        'room_details': room_details
    })
qgelzfjb

qgelzfjb1#

room_details, created = Room.objects.get_or_create(name=room_info)

这将获取房间(如果存在)或创建它(如果找不到)。返回元组中的第一个变量是实际的房间对象。第二个变量是一个bool,用于了解它是已创建的(true)还是已存在的(false)。然后您可以创建如下逻辑:

room_details, created = Room.objects.get_or_create(name=room_info)
if created:
 enter code here to initiate a new room
else:
 enter code here to handle a room that already exists.
kuuvgm7e

kuuvgm7e2#

room_details = Room.objects.get(name=room_info)

如果数据库中不存在名为room_info的房间对象,则会出现此错误。
相反,您可以做的是:

try:
    room = Room.objects.get(name=room_info)
except Room.DoesNotExist:
    raise Http404("Given query not found....")

相关问题