Python Django-无法从模型访问数据

Python Django-无法从模型访问数据,python,django,Python,Django,我目前正在使用Django3.2,当我试图在视图中打印模型数据时,它会抛出以下错误 AttributeError at / 'QuerySet' object has no attribute 'Name' 我的观点是这样的 from django.shortcuts import render, HttpResponse, redirect from django.contrib.auth.decorators import login_required from user.models i

我目前正在使用Django3.2,当我试图在视图中打印模型数据时,它会抛出以下错误

AttributeError at /
'QuerySet' object has no attribute 'Name'
我的观点是这样的

from django.shortcuts import render, HttpResponse, redirect
from django.contrib.auth.decorators import login_required
from user.models import Student

@login_required
def home(request):
   user = request.user
   student_user = Student.objects.all()
   student_users = []
   for user in student_user:
      student_users.append(user.User.username)
   stu_user = request.user.username
   student_list_set = set(student_users)



  if stu_user in student_list_set:
    data =  Student.objects.filter(User=request.user)
    print(data.Name)

    params = {
        'data':student,
    }
    return render(request, 'dashboard/student/dashboard.html', params)
class Student(models.Model):
 User = models.ForeignKey(User, on_delete=models.CASCADE)
 Name = models.CharField(max_length=50)
 Profile = models.ImageField(upload_to = upload_student_profile_to, default = 
 'defaults/student_profile.png')
 class_choices = (('1','1'), ('2','2'), ('3','3'), ('4','4'),('5','5'),('6','6'),('7','7'),('8','8'), 
 ('9','9'),('10','10'))
 Class = models.CharField(max_length=100, choices=class_choices)
 section_choices = (('A','A'),('B','B'),('C','C'),('D','D'),('E','E'))
 Section = models.CharField(max_length=100, choices=section_choices)
 Roll = models.IntegerField(blank=True)
 Number = models.IntegerField(blank=True)
 is_banned = models.BooleanField(default=False)

 def __str__(self):
     return self.Name + " of " + self.Class
当我尝试打印数据时,请打印data.name。它抛出以下错误

AttributeError at /
'QuerySet' object has no attribute 'Name'
我的models.py文件如下所示

from django.shortcuts import render, HttpResponse, redirect
from django.contrib.auth.decorators import login_required
from user.models import Student

@login_required
def home(request):
   user = request.user
   student_user = Student.objects.all()
   student_users = []
   for user in student_user:
      student_users.append(user.User.username)
   stu_user = request.user.username
   student_list_set = set(student_users)



  if stu_user in student_list_set:
    data =  Student.objects.filter(User=request.user)
    print(data.Name)

    params = {
        'data':student,
    }
    return render(request, 'dashboard/student/dashboard.html', params)
class Student(models.Model):
 User = models.ForeignKey(User, on_delete=models.CASCADE)
 Name = models.CharField(max_length=50)
 Profile = models.ImageField(upload_to = upload_student_profile_to, default = 
 'defaults/student_profile.png')
 class_choices = (('1','1'), ('2','2'), ('3','3'), ('4','4'),('5','5'),('6','6'),('7','7'),('8','8'), 
 ('9','9'),('10','10'))
 Class = models.CharField(max_length=100, choices=class_choices)
 section_choices = (('A','A'),('B','B'),('C','C'),('D','D'),('E','E'))
 Section = models.CharField(max_length=100, choices=section_choices)
 Roll = models.IntegerField(blank=True)
 Number = models.IntegerField(blank=True)
 is_banned = models.BooleanField(default=False)

 def __str__(self):
     return self.Name + " of " + self.Class

数据变量是queryset,而不是Student对象,所以您应该像访问列表一样访问它

如果你确定

data =  Student.objects.filter(User=request.user)
返回一个可以这样打印的元素:

print(data[0].Name)

如果每个用户只能存在一个学生,则更简单的方法如下:

print(data[0].Name)
student=student.objects.get(User=request.User)
打印(学生姓名)
检查以了解何时使用
.get()
以及何时使用
.filter()