MultipleObjectsReturned - get() вернула более одного пользователя - вернулось 2

views.py

def message(request):

username = request.GET.get('username')

user = User.objects.get()
return render(request,'member/message.html',{
    'username':username,
    'user' : user

})

if User.objects.filter(name=user).exists():

    return redirect('/'+user+'/?username='+username)
else:
    new_user = User.objects.create(name=user)  
    new_user.save()
    return redirect('/'+user+'/?username='+username) 

def send(request):

message = request.POST['message']
username = request.POST['username']


new_message = Message.objects.create(value=message,user=username)
new_message.save()

return HttpResponse('Message sent successfully')

def getMessages(request,user):

user = User.objects.get()
messages = Message.objects.filter()
return JsonResponse({"messages":list(messages.values())})

models.py

class Message(models.Model):

value = models.CharField(max_length=10000000)
date = models.DateTimeField(default=datetime.now, blank=True)
user = models.CharField(max_length=1000000)

Является ли намерением вашего метода getMessages(request, user) получить сообщения для данного пользователя?

Если да, то измените его на следующее (вы не применяете фильтрацию, поскольку у вас нет аргументов в вызове get()):

def getMessages(request, user):
    user = User.objects.get(user=user)
    messages = Message.objects.filter()
    return JsonResponse({"messages":list(messages.values())})

Вероятно, вам вообще не нужно запрашивать модель User, поскольку ваш объект Message не имеет внешнего ключа к таблице User, это просто поле CharField, поэтому я предполагаю, что оно просто хранит имя пользователя.

Если цель этого метода - просто получить сообщения для данного пользователя, то это должно сработать:

def getMessages(request, user):
    messages = Message.objects.filter(user=user)
    return JsonResponse({"messages":list(messages.values())})
Вернуться на верх