【发布时间】:2019-04-16 12:46:05
【问题描述】:
**在尝试从一个端点创建两个对象(没有嵌套序列化程序)时。我有一个错误
错误:
/migratestudent 的 AttributeError
尝试在序列化程序 StudentDataMigrateSerializer 上获取字段 registration_no 的值时出现 AttributeError。
序列化程序字段可能命名不正确,并且与 Student 实例上的任何属性或键都不匹配。
原始异常文本为:'Student' object has no attribute 'registration_no'。
class Student(models.Model):
name = models.CharField(max_length=300)
sex = models.CharField(choices=SEX_CHOICES,max_length=255, null=True)
Category = models.CharField(max_length=100, null=True)
def __str__(self):
return self.name
class Registration(models.Model):
registration_no = models.CharField(max_length=255, unique=True)
student = models.OneToOneField(Student,
on_delete= models.CASCADE, related_name='registration')
def __str__(self):
return self.registration_no
class StudentDataMigrateSerializer(serializers.Serializer):
name = serializers.CharField()
sex = serializers.CharField()
registration_no = serializers.CharField()
#registration_no = serializers.CharField()
def create(self,validated_data):
name = validated_data.pop('name')
sex = validated_data.pop('sex')
registration_no= validated_data.pop('registration_no')
#registration_no = validated_data.pop('registration_no')
#check for existence of registration number
#Student.objects.CheckRegistration(name, '4')
try:
regn = Registration.objects.get('registration_no')
except:
student = Student.objects.create(name=name, sex=sex)
registration = Registration.objects.create(
registration_no=registration_no,
student=student)
return student
class StudentDataMigrateCreateAPIVIew(ListCreateAPIView):
serializer_class= StudentDataMigrateSerializer
def get_queryset(self):
student = Student.objects.all()
return student
【问题讨论】:
标签: django django-rest-framework