0

When i use my super acc, this error does not shows up, but when I tried to use other acc. this error shows up. where did I do wrong? The error : DoesNotExist at /voting/ Userdata matching query does not exist.

My Model :

class Userdata(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    faculty = models.ForeignKey(Fakultas, on_delete=models.CASCADE, default=1)
    is_voted = models.BooleanField(default=False)

    def __str__(self): return self.user.username

My views :

@login_required
def voted(response):
    user = Userdata.objects.get(id=response.user.id)  # get the username
    if user.is_voted:
        return render(response, 'Main/voting.html', {'calon': Voting.objects.order_by('id'), 'hasil': 'You Have Voted'})
    if response.method == 'POST':
        id = response.POST['idcalon']
        calon2 = Voting.objects.get(id=id)  # get user selection in html
        user.is_voted = True
        calon2.voters += 1
        user.save()
        calon2.save()
    return render(response, 'Main/voting.html', {'calon': Voting.objects.order_by('id')})  # balik ke sendiri
  • Does this answer your question? [Django DoesNotExist](https://stackoverflow.com/questions/16181188/django-doesnotexist) – JPG Nov 11 '20 at 06:08

1 Answers1

1

User and UserData don't have the same primary key. So Userdata.objects.get(id=response.user.id) will not work because there is no such Userdata with the given user's id. But you do not need that, because User and Userdata have OneToOne relation. So simply use this:

user = response.user.userdata
ruddra
  • 50,746
  • 7
  • 78
  • 101