django - Django Rest 框架:序列化器上的共享字段
问题描述
我有几个序列化器共享一些字段,如 meta_id、category_id 等。
显然,我可以在序列化器上将它们单独声明为 SerializerMethodField,但我想找到一种方法来重用逻辑,或者使用 Mixin、Decorator 或继承。
如何声明基本序列化程序并继承它——同时仍然从 serializers.ModelSerializer 继承?这样我就可以重用 get_meta_id 并确保它显示在字段中?
class Foo(serializers.ModelSerializer, somethingHere?):
meta_id = Serializers.SerializerMethodField()
class Meta:
model = Foo
fields = [...]
def get_meta_id(self, obj):
...
是否可以只将两个参数传递给类
解决方案
class BaseSerializer(serializers.ModelSerializer): # The BaseSerializer class inherit everthing from ModelSerializer
class Meta(serializers.ModelSerializer.Meta): # The BaseSerializer.Meta inherits everything from ModelSerializer.Meta
def get_meta_id(self, obj):
return self.meta_id
class Foo(BaseSerializer):
meta_id = Serializers.SerializerMethodField()
class Meta(BaseSerializer.Meta): # Here you should get the ModelSerializer.Meta + your custom get_meta_id
model = Foo
fields = [...]
推荐阅读
- android-motionlayout - 带有 recyclerView 的 Motionlayout 不稳定
- swift - textView 和键盘之间的空间
- flutter - 如何使 StarRating 小部件对齐左侧
- ios - 如何使用委托和协议快速编辑和传回单元格数据
- php - 我无法将条形码图像保存到文件夹中,我保存信息后一直黑屏
- c - 宏内容的长度是否有限制?
- java - 项目开始运行时如何检查文件是否存在?
- c# - Unity 中的 2D 角色不跳跃问题
- javascript - 在柱形图上显示负值的另一种方法
- javascript - 是否可以在数组中包含 Getter/Setter?