Django序列化程序,foreignkeys错误

时间:2017-04-22 18:23:09

标签: django django-models django-rest-framework django-serializer

在序列化程序上我试图将人员数据显示给员工,但是在尝试获取序列化程序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个外键(用户,人和分支) 谢谢!

1 个答案:

答案 0 :(得分:-1)

在您的员工序列化程序中,您应该将名称人员变量更改为人员,并且我假设因为只有一个人与员工对象相关联,您可以将多个人员更改为False

class EmployeeSerializer(serializers.ModelSerializer):
    person = PersonSerializer(many=False, )


    class Meta:
       model = Employee
       fields = ('person')