如何解决'QuerySet' 对象没有属性 'pk'
#models
class Student(models.Model):
firstname = models.CharField(max_length=100,default='ll')
lastname = models.CharField(max_length=100,default='fewf')
id_code = models.CharField(max_length=10,default=0,unique=True)
melli = models.CharField(max_length=30,unique=True)
personal_pic = models.ImageField(upload_to=studentFile)
major = models.ForeignKey(Major,on_delete=models.PROTECT,default=0)
date_of_start = models.DateField(default=datetime.date.today)
def __str__(self):
return self.id_code
#views
class loginView(APIView):
def post(self,request):
data = request.data
melli = data.get('melli')
id_code = data.get('id_code')
student = Student.objects.filter(id_code=id_code,melli=melli)
if not student.exists():
return Response('error')
serializer = StudentSerializer(student,data=data)
serializer.is_valid()
return Response(serializer.data)
当我尝试提交发布请求时,我无法收到回复,但出现错误。我该如何解决?
解决方法
您序列化一个集合元素,因此您应该使用many=True
:
serializer = StudentSerializer(student,data=data,many=True)
如果您只想处理单个对象,则需要检索单个对象,而不是对象集合,例如使用 .get(…)
[Django-doc] 而不是 {{3} }.
Model.filter
返回一个 queryset,它就像一个模型列表,而不是一个特定的模型。相反,您应该使用 get
,它返回单个模型实例:
student = Student.objects.get(id_code=id_code,melli=melli)
如果您打算在此特定查询中包含 1 个以上的学生,您可以将 many=True
添加到您的序列化程序中:
serializer = StudentSerializer(student,data=data,many=True)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。