我有两个模型与模型employee
有关系person
但与模型person
没有关系employee
。
喜欢:
class Person(models.Model):
name = models.CharField(max_length=100)
address = models.CharField(max_length=100)
class Employee(models.Model):
person = models.ForeignKey(Person, related_name='person_info')
code = models.CharField()
在这种情况下,我需要code
人员序列化程序中的字段数据。
我可以通过在人物模型中编写方法或在人物序列化程序中使用SerializerMethodField来解决这个问题
像这样:
def get_employee_code(self):
return Employee.objects.get(person=self).id
并将其添加为个人序列化程序中的源
employee_code = serializers.CharField(source='get_employee_code')
或将员工序列化程序添加到人员序列化程序中
class PersonSerializer(serializers.ModelSerializer):
employee = EmployeeSerializer()
class Meta:
model = Person
fields = ('name', 'address', 'employee')
但我试图用反向关系来做到这一点,但我做不到。我试过这样,它给出了一个错误
序列化器:
class PersonSerializer(serializers.ModelSerializer):
employee_code = serializers.CharField(source='person_info.code')
class Meta:
model = Person
fields = ('name', 'address', 'employee_code')
我怎样才能用反向关系解决这个问题?