-1
在串行器即时试图显示人员数据到员工,但即时获取此错误AttributeError当试图获取字段persons
在串行器EmployeeSerializer
上的值。 串行器字段可能命名错误,并且不匹配Employee
实例上的任何属性或密钥。 原始异常文本为:'员工'对象没有'人员'属性。Django串行器,外键错误
这里是我的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的工作,所以我不明白如何调用foreing键。 在我的数据库中,我有3个外键(用户,人员和分支)的表员工 谢谢!
所以,如果我想返回所有来自Person的数据将不得不添加返回中的所有字段,并在序列化程序中逐个添加? – Akarok
对不起,首先我误解了你的问题,我按照你想要的方式编辑它。您实际上正确使用它,但是当序列化外键字段时,您需要使用实际字段名称而不是相关名称 –