在序列化程序上我试图将人员数据显示给员工,但是在尝试获取序列化程序persons
上的字段EmployeeSerializer
的值时,我得到此错误属性错误。
序列化程序字段可能名称不正确,并且与Employee
实例上的任何属性或键都不匹配。
原始例外文本是:'员工'对象没有属性' person'。
这是我的models.py
class Person(models.Model):
id = models.IntegerField(primary_key=True)
name = models.CharField(max_length=50)
curp = models.CharField(max_length=50)
rfc = models.CharField(max_length=12)
gender = models.CharField(max_length=20)
class Employee(models.Model):
id = models.IntegerField(primary_key=True)
joining_date = models.DateField()
salary = models.DecimalField(18, decimal_places=2, max_digits=50)
status = models.IntegerField()
person = models.ForeignKey(Person, related_name='persons', on_delete=models.CASCADE)
user = models.ForeignKey(User)
branch = models.ForeignKey(Branch)
串行器
class PersonSerializer(serializers.ModelSerializer):
class Meta:
model = Person
fields = ('name', 'curp', 'rfc', 'gender')
class EmployeeSerializer(serializers.ModelSerializer):
persons = PersonSerializer(many=True)
class Meta:
model = Employee
fields = ('persons')
这是我第一次在django工作,所以我不知道如何调用外出键。 在我的数据库中,我有表Employee有3个外键(用户,人和分支) 谢谢!
答案 0 :(得分:-1)
在您的员工序列化程序中,您应该将名称人员变量更改为人员,并且我假设因为只有一个人与员工对象相关联,您可以将多个人员更改为False
class EmployeeSerializer(serializers.ModelSerializer):
person = PersonSerializer(many=False, )
class Meta:
model = Employee
fields = ('person')