员工通用视图:
class EmployeeCreateView(generics.CreateAPIView):
serializer_class = EmployeeSerializer
我有一个嵌套的Employee序列化程序。
class EmployeeSerializer(serializers.ModelSerializer):
user = UserSerializer(required=True)
class Meta:
model = Employee
fields = ('user','employee_position','join_date')
def create(self, validated_data):
"""
Overriding the default create method of the Model serializer.
:param validated_data: data containing all the details of student
:return: returns a successfully created student record
"""
user_data = validated_data.pop('user')
user = UserSerializer.create(UserSerializer(), validated_data=user_data)
employee, created = Employee.objects.update_or_create(user=user,
join_date=validated_data.pop('join_date'),
employee_position=validated_data.pop('employee_position'))
return employee
现在,当我尝试在文档中显示此API时:
所以我也想显示User的字段。 是否可以对此进行自定义?
答案 0 :(得分:0)
我相信实现所需目标的正确方法是分别创建一个用户创建终结点,然后使用“主键相关”字段在Employee Serializer中为用户提供一个字段。
这种特殊情况是在我进行实习并相信我时出现的,您不想使用直接嵌套的用户序列化程序,因为当您尝试制作用于更新Employee的API时,这会带来问题,因为创建用户的控件已转移到Employee端点。
这样,您首先创建用户,然后在注册时Employee可以根据主键分配适当的用户。