我正在致力于将旧版 REST api 迁移到 Django REST 框架。许多响应包含嵌套序列化器,例如:
class TemplateSerializer(serializers.ModelSerializer):
colors = ColorSerializer(read_only=True, many=True)
fonts = FontSerializer(read_only=True, many=True)
property_ids = serializers.PrimaryKeyRelatedField(many=True, queryset=Property.objects.all())
...
class Meta:
model = Template
fields = '__all__'
class ColorSerializer(serializers.ModelSerializer):
swatch = SwatchSerializer(read_only=True)
class Meta:
model = Color
fields = '__all__'
# and so forth, just imagine several serializers with fields that are read only or write only etc
目前我的所有序列化器都在
my_app/serializers.py
中,并且 serializers.py
文件已经变得太大而且杂乱无章。在该文件中,django 模型通常有多个版本的序列化器,例如, list
视图方法可能具有与 retrieve
不同的序列化器,而 create
可能具有与 update
不同的序列化器,等等。单个 ViewSet 可能有 4-5 个不同的序列化器。此外,嵌套序列化器(如上面的 ColorSerializer
)可能具有不同的版本,具体取决于嵌套在另一个序列化器中时与调用 GET /colors
端点时的响应要求。
话虽这么说,我想开始组织/重构一些东西以提高可读性,尝试变得更加 DRY。我知道 API 的设计很糟糕,但由于需要花费大量时间,因此无法重新设计。清理我的
serializers.py
文件和序列化器类的最佳方法是什么?任何帮助和意见表示赞赏!谢谢
创建serializers名称包。为该应用程序的每个模型创建一个单独的序列化程序文件。不要忘记在 init.py 文件中导入序列化器。通过基于模型对序列化器文件进行分叉,可以轻松找到与特定模型 API 相关的序列化器。