[Django]-QuerySet, Object has no attribute id – Django

70👍

this line of code

at = AttachedInfo.objects.filter(attachedMarker=m.id, title=title)

returns a queryset

and you are trying to access a field of it (that does not exist).

what you probably need is

at = AttachedInfo.objects.get(attachedMarker=m.id, title=title)
👤EsseTi

27👍

The reason why you are getting the error is because at is a QuerySet ie: a list. You can do something like at[0].id or use get instead of filter to get the at object.

Hope it helps!

5👍

In most cases you do not want to handle not existing objects like that. Instead of

ad[0].id

use

get_object_or_404(AttachedInfo, attachedMarker=m.id, title=title)

It is the recommended Django shortcut for that.

2👍

I got this error for almost 2 days, the main issue for this error solely depends on two files i.e.

models.py & views.py

I was getting this error because I wanted to create session from email id but it shows their is no attribute email so it wasn’t fetching any str object.

Solution:-

models.py

class Register(models.Model):
userid = models.AutoField(primary_key=True)
name = models.CharField(max_length=100)
email = models.EmailField(max_length=200)
password = models.CharField(max_length=100)

def __str__(self):
    return "%s %s" %(self.name, self.email)

Create a string for the following you want data from according to your project.

views.py

    if request.method == "POST":
        emailx1 = request.POST['emailx']
        passwordx1 = request.POST['passwordx']
        if (Register.objects.filter(email=emailx1, password=passwordx1)).exists():
            a = Register.objects.filter(email=emailx1).first()
            request.session['session_name'] = a.email
            request.session['session_id'] = a.userid
            return render(request, "index.html", {"a": a})

Use .first() method with your Model.objects method. This have resolved my problem hope it would resolves yours too.

Leave a comment