自定义 CreateModelMixin - 在我的模型中定义的对象创建

Customized CreateModelMixin - Object creation defined in my Model

我剩下的api视图只定义了两个方法:

class RequestSerializerViewSet(mixins.CreateModelMixin,
                    mixins.ListModelMixin,
                    viewsets.GenericViewSet):

我有一些覆盖列表的经验,但是我没有覆盖创建的经验,因为它似乎要复杂得多。

我想达到的效果如下。我的 Request 模型有一个创建 Requests 实例的特殊方法 - start_request。这个方法不仅创建了 Request 的实例,还创建了一些额外的外部对象并将它们分配给新创建的 Request.

所以我的目标是修改 rest api POST(创建、perform_create 或序列化器 - 我不知道 atm . 这是正确的方法)方法,它不会自己创建 Request,而是使用 start_request 方法模型的。 最好的 django 方法是什么?

您可以在序列化程序中重新定义 create 方法。假设您有 RequestSerializer:

class RequestSerializer(serializers.ModelSerializer):
    class Meta:
        model = Request
        fields = "__all__"

    def create(self, validated_data):
        request = Request.start_request(**validated_data)  # pass all parameters from serializer
        return request