QuerySet, Object has no attribute id - Django

前端 未结 4 668
死守一世寂寞
死守一世寂寞 2021-02-01 04:24

I\'m trying to fetch the id of certain object in django but I keep getting the following error Exception Value: QuerySet; Object has no attribute id. my function in views.py

相关标签:
4条回答
  • 2021-02-01 04:38

    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.

    0 讨论(0)
  • 2021-02-01 04:57

    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)
    
    0 讨论(0)
  • 2021-02-01 05:02

    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!

    0 讨论(0)
  • 2021-02-01 05:03

    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.

    0 讨论(0)
提交回复
热议问题