我应该如何编写一个序列化程序,其中外键冷设置由 SlugRelatedField 或由外键序列化程序设置?

How should I write a serializer where a foreign key cold be set by SlugRelatedField OR by the foreign key serializer?

我有一个序列化程序如下:

class MySerializer(serializers.ModelSerializer):
    """ Serializer for mymodel """

    version = VersionSerializer()
    device = DeviceSerializer()
    camera = CameraSerializer(many=True)

    

我的代码需要能够创建只知道相机外键上一个字段的 mymodel 实例。

我可以像这样创建另一个序列化程序:

class MySerializerSlugRelated(serializers.ModelSerializer):
    """ Serializer for vision """

    version = VersionSerializer()
    device = DeviceSerializer()
    camera = serializers.SlugRelatedField(slug_field='my_slug_field', many=True, queryset=Camera.objects.all())

但是重新创建另一个序列化器只是为了能够以不同的方式获取一个字段似乎有点脏,有没有一种干净的方法来做到这一点?

谢谢

可以让MySerializerSlugRelated继承自MySerializer,只重新定义camera字段:

class MySerializerSlugRelated(<strong>MySerializer</strong>):
    <strong>camera</strong> = serializers.SlugRelatedField(
        slug_field='my_slug_field',
        many=True,
        queryset=Camera.objects.all()
    )