首页 > 解决方案 > 我遇到了关于 AttributeError 的问题

问题描述

AttributeError at /addpatient_to_db
'QuerySet' object has no attribute 'wardno'

请求方法:POST

请求网址: http: //127.0.0.1 :8000/addpatient_to_db

Django 版本:2.2.5

异常类型:AttributeError

异常值: 'QuerySet' object has no attribute 'wardno'

异常位置:C:\Users\Saurabh Patil\Desktop\SanjeevniHospital\admininterface\views.py in addpatient_to_db, line 114

Python可执行文件: C:\Users\Saurabh Patil\AppData\Local\Programs\Python\Python37\python.exe

Python版本:3.7.4

蟒蛇路径:

['C:\\Users\\Saurabh Patil\\Desktop\\SanjeevniHospital',
 'C:\\Users\\Saurabh '
 'Patil\\AppData\\Local\\Programs\\Python\\Python37\\python37.zip',
 'C:\\Users\\Saurabh Patil\\AppData\\Local\\Programs\\Python\\Python37\\DLLs',
 'C:\\Users\\Saurabh Patil\\AppData\\Local\\Programs\\Python\\Python37\\lib',
 'C:\\Users\\Saurabh Patil\\AppData\\Local\\Programs\\Python\\Python37',
 'C:\\Users\\Saurabh Patil\\AppData\\Roaming\\Python\\Python37\\site-packages',
 'C:\\Users\\Saurabh '
 'Patil\\AppData\\Local\\Programs\\Python\\Python37\\lib\\site-packages']

服务器时间:2020 年 1 月 26 日星期日 12:07:40 +0000

这是我的代码

视图.py

def addpatient_to_db(request):
    if request.method == 'POST':
        name = request.POST['name']
        age = request.POST['age']
        sex = request.POST['sex']
        address = request.POST['address']
        contno = request.POST['contno']
        wardno = request.POST['wardno']
        bedno = request.POST['bedno']
        doa = request.POST['doa']
        docass = request.POST['docass']
        pii = request.POST['pii']

        alldata = patientdetails.objects.all()

        if alldata.wardno == wardno and alldata.bedno == bedno: # <---- This is the issuing line
            return render(request, "addpatient.html")
        else:
            addp = patientdetails(name=name, age=age, sex=sex, address=address, mobno=contno,
                                  wardno=wardno, bedno=bedno, dateofallot=doa, docass=docass, illness_issue=pii)
            addp.save()
            return redirect('addpatient')
    else:
        return render(request, 'addpatient.html')

模型.py

from django.db import models

# Create your models here.

class patientdetails(models.Model):
    name = models.CharField(max_length=50)
    age = models.CharField(max_length=3)
    sex = models.CharField(max_length=10)
    address = models.CharField(max_length=100)
    mobno = models.CharField(max_length=10)

    wardno = models.CharField(max_length=3)
    bedno = models.CharField(max_length=3)
    dateofallot = models.CharField(max_length=10)

    docass = models.CharField(max_length=50)
    illness_issue = models.CharField(max_length=50)

标签: pythonmysqldjango

解决方案


你的问题是在线

     alldata = patientdetails.objects.all()

您正在使用返回多个对象的查询集,并且您无法使用多个对象来访问数据库以进行属性化。

所以你应该在这里做的是遍历查询集中的每个项目,然后只访问属性

     for eachQueryset in alldata:
         if eachQueryset.wardno == wardno and eachQueryset.bedno ==bedno:
               return render(request, "addpatient.html")
         else:
              addp = patientdetails(name=name, age=age, sex=sex, 
                       address=address,mobno=contno,wardno=wardno,bedno=bedno, 
                           dateofallot=doa, docass=docass, illness_issue=pii)
              addp.save()
              return redirect('addpatient')

这应该可以解决您的问题


推荐阅读