Django 序列化程序,外键错误
Django serializers, foreignkeys error
在序列化器上,我试图将人员数据显示到 Employee 中,但在尝试为序列化器 EmployeeSerializer
上的字段 persons
获取值时,我收到此错误 AttributeError。
序列化程序字段的命名可能不正确,并且与 Employee
实例上的任何属性或键都不匹配。
原始异常文本为:'Employee' 对象没有属性 'persons'.
这是我的 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 上工作,所以我不知道如何调用外键。
在我的数据库中,我有 table 员工和 3 个外键(用户、人员和分支机构)
谢谢!
在您的 Employee 序列化器中,您应该将 name persons 变量更改为 person,我假设因为只有一个人与 employee 对象相关,您可以将 many 更改为 False
class EmployeeSerializer(serializers.ModelSerializer):
person = PersonSerializer(many=False, )
class Meta:
model = Employee
fields = ('person')
在序列化器上,我试图将人员数据显示到 Employee 中,但在尝试为序列化器 EmployeeSerializer
上的字段 persons
获取值时,我收到此错误 AttributeError。
序列化程序字段的命名可能不正确,并且与 Employee
实例上的任何属性或键都不匹配。
原始异常文本为:'Employee' 对象没有属性 'persons'.
这是我的 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 上工作,所以我不知道如何调用外键。 在我的数据库中,我有 table 员工和 3 个外键(用户、人员和分支机构) 谢谢!
在您的 Employee 序列化器中,您应该将 name persons 变量更改为 person,我假设因为只有一个人与 employee 对象相关,您可以将 many 更改为 False
class EmployeeSerializer(serializers.ModelSerializer):
person = PersonSerializer(many=False, )
class Meta:
model = Employee
fields = ('person')