具有2个或更多字段的Django Serializer Method字段

时间:2017-11-09 09:35:56

标签: django django-rest-framework

我需要从现有表扩展我的序列化程序。

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):
       ..

我知道这个方法..两个函数都要调用同一个表我想减少功能。所以我需要调用单个函数来返回多个字段。

可能吗?

2 个答案:

答案 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

非常相似
相关问题