而不是使用ManyRelatedField,请使用嵌套的序列化程序作为字段:
class SubCategorySerializer(serializers.ModelSerializer): class meta: model = Category fields = ('name', 'description')class CategorySerializer(serializers.ModelSerializer): parentCategory = serializers.PrimaryKeyRelatedField() subcategories = serializers.SubCategorySerializer() class meta: model = Category fields = ('parentCategory', 'name', 'description', 'subcategories')如果要处理任意嵌套的字段,则应查看自定义文档的默认字段部分。你目前无法直接将序列化器声明为自身的字段,但是可以使用这些方法来覆盖默认情况下使用的字段。
class CategorySerializer(serializers.ModelSerializer): parentCategory = serializers.PrimaryKeyRelatedField() class meta: model = Category fields = ('parentCategory', 'name', 'description', 'subcategories') def get_related_field(self, model_field): # Handles initializing the `subcategories` field return CategorySerializer()实际上,正如你所指出的,上述内容并不完全正确。这有点骇人听闻,但你可以尝试在声明序列化程序之后添加字段。
class CategorySerializer(serializers.ModelSerializer): parentCategory = serializers.PrimaryKeyRelatedField() class meta: model = Category fields = ('parentCategory', 'name', 'description', 'subcategories')CategorySerializer.base_fields['subcategories'] = CategorySerializer()声明递归关系的机制是需要添加的。



