我需要从现有表扩展我的序列化程序。
class SER_Assets(serializers.ModelSerializer):
asset_id = serializers.SerializerMethodField()
asset_name = serializers.SerializerMethodField()
def get_asset_id(self, obj):
t1 = Tbl.objects.get(tbl_id=obj.id)
return t1.asset_id
def get_asset_name(self, obj):
..
我知道这个方法..两个函数都要调用同一个表我想减少功能。所以我需要调用单个函数来返回多个字段。
可能吗?
答案 0 :(得分:0)
class SER_Assets(serializers.ModelSerializer):
asset_compound = serializers.SerializerMethodField()
def get_asset_compound(self, obj):
t1 = Tbl.objects.get(tbl_id=obj.id)
return {"asset_id": t1.asset_id, "asset_name": t1.asset_name}
尝试这个:D
答案 1 :(得分:0)
由于您使用的是serializers.ModelSerializer
,如果该字段是模型字段,那么您只需提及模型字段的名称即可。
注意::如果您需要对字段进行一些操作,则可以使用serializers.SerializedMethodField
。
class MyModelSerializer(serializers.ModelSerializer):
class Meta:
model = models.MyModel
fields = ["asset_id", "asset_name", "field_3"]
# You can also use __all__ if you want to include all the fields
# fields = "__all__"
ModelSerializer
的行为与Django ModelForm