Django 覆盖嵌套DRF序列化程序以便在不';不存在?
我有一个Django Rest框架项目,在整个应用程序中使用嵌套的UserSerializer。一个例子是一个TicketSerializer,其所有者有一个嵌套的UserSerializer 我希望在任何时候序列化用户数据时,它都可以获取或创建用户,而不必作为TicketSerializer create方法的一部分显式执行此操作 我知道可能有很多方法可以做到这一点,所以我试图理解最“正确”的方法。目前,我正在考虑重写UserSerializerinit方法,或者创建一个处理逻辑的自定义验证器。理想情况下,这将是一个可以实现为可重用的Mixin或验证器的解决方案,可以轻松地传播到多个项目Django 覆盖嵌套DRF序列化程序以便在不';不存在?,django,django-rest-framework,Django,Django Rest Framework,我有一个Django Rest框架项目,在整个应用程序中使用嵌套的UserSerializer。一个例子是一个TicketSerializer,其所有者有一个嵌套的UserSerializer 我希望在任何时候序列化用户数据时,它都可以获取或创建用户,而不必作为TicketSerializer create方法的一部分显式执行此操作 我知道可能有很多方法可以做到这一点,所以我试图理解最“正确”的方法。目前,我正在考虑重写UserSerializerinit方法,或者创建一个处理逻辑的自定义验证器
class UserSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = ('id', 'username', 'email')
class TicketSerializer(serializers.ModelSerializer):
owner = UserSerializer()
class Meta:
model = Ticket
def create(self, validated_data):
user = validated_data.pop('user')
user_obj = User.objects.get_or_create(**user)
ticket = Ticket.objects.create(**validated_data, user=user_obj)
return ticket
编写公共API或内部API。这严重耦合了应用程序模块,如果需要,将来很难解耦。为什么不进行两次调用1)创建用户,2)创建票证?这是一个非常大的应用程序。我不关心解耦,我只是在寻找一种方法,以消除每次使用UserSerializer时获取和创建用户的重复逻辑。此信息在DRF手册中。DRF手册描述了我当前的解决方案,如上图所示。