MultipleObjectsReturned - get() returned more than one User -- it returned 2

Viewed 136

I have some trouble with User.get(). the error msg is:

MultipleObjectsReturned - get() returned more than one User -- it returned 2.

For more explanation here are my 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())})

and here we have models.py:

class User(models.Model):
    member_id = models.BigAutoField(primary_key=True)
    username = models.CharField(max_length=100)
    name = models.CharField(max_length=100)
    email = models.EmailField(max_length=50)
    password = models.CharField(max_length=100)
    confrom_password = models.CharField(max_length=50)

class Message(models.Model):

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

Is the intention of your getMessages(request, user) method to get the messages for the given user?

If so, change it to this (you aren't applying filtering since you have no arguments in the get() call):

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

You probably don't need to query User model at all there though as your Message object doesn't have a foreign key to the User table, it's just a CharField so I assume just storing the username.

If you purpose of this method is to just get the messages for your given user then this should work:

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