django rest framework-返回模型序列化程序字段的自定义数据

django rest framework-返回模型序列化程序字段的自定义数据,rest,django-rest-framework,Rest,Django Rest Framework,我有以下型号: class ServerSimpleConfigSerializer(mixins.GetCSConfigMixin, serializers.ModelSerializer): mp_autoteambalance = serializers.BooleanField(label='Auto Team Balance', default=True, required=False) mp_friendlyfire = serializers.BooleanFiel

我有以下型号:

class ServerSimpleConfigSerializer(mixins.GetCSConfigMixin, serializers.ModelSerializer):
    mp_autoteambalance = serializers.BooleanField(label='Auto Team Balance', default=True, required=False)
    mp_friendlyfire = serializers.BooleanField(label='Friendly Fire', default=False, required=False)
    mp_autokick = serializers.BooleanField(label='Auto team-killer banning and idle client kicking', default=True, required=False)
    # hostname = serializers.CharField(label='Hostname', max_length=75, required=True)
    rcon_password = serializers.CharField(label='RCON Password', max_length=75, required=True)
    sv_password = serializers.CharField(label='Server Password', max_length=75, required=False)
    mp_startmoney = serializers.IntegerField(label='Start Money', required=False, validators=[MinValueValidator(800), MaxValueValidator(16000)])
    mp_roundtime = serializers.FloatField(label='Round Time', required=False)
    mp_timelimit = serializers.IntegerField(label='Map Time Limit', required=False)
    fpath = os.path.join(settings.ROOT_DIR, "cs16/tmp/server.json")

    class Meta:
        model = CS16Server
        fields = ('name', 'game_config', 'mp_autoteambalance', 'mp_friendlyfire',
                'mp_autokick', 'hostname', 'rcon_password', 'sv_password',
                'mp_startmoney', 'mp_roundtime', 'mp_timelimit')
        read_only_fields = ('name', 'game_config',)
该模型具有以下字段:

  • 名称、游戏配置(大文本)和主机名
如何返回序列化程序的上述定义字段,尽管它们不在模型中

我想为每个字段设置一些自定义值,并将它们作为JSON返回。 可能吗? 实际上,上述定义字段的值可以在“game_config”字段中找到。 我想解析这些值并返回它们&我不想将它们作为单独的字段放在模型中

解析游戏配置,获得一对:(field0,val0)。。。(fieldN,valN)和序列化程序中, 为序列化程序字段设置这些值

目前我只得到以下回应:

{
    "name": "Chronos",
    "game_config": "hostname \"A New Gameservers.com Server is Born\"\nrcon_password \"\"\nsv_password \"1410271\"\nsv_contact email@domain.com\nsv_region 255\nsv_filterban 1\nsv_logbans 0\nsv_unlag 1\nmp_startmoney 800\nmp_chattime 30\nmp_footsteps 1\nsv_footsteps 1\nmp_logdetail 0\nmp_logmessages 0\nmp_timelimit 30\nmp_autokick 1\nmp_autoteambalance 1\nmp_flashlight 0\nmp_forcerespawn 0\nmp_forcechasecam 0\nmp_freezetime 0\nmp_friendlyfire 0\nmp_hostagepenalty 0\nmp_limitteams 0\nmp_roundtime 5\nmp_tkpunish 1\nsv_voiceenable 1\nsv_voicecodec voice_speex\nsv_voicequality 3\nsv_alltalk 0\nsv_restartround 1\nsv_maxspeed 320\nsv_proxies 1\nallow_spectators 1\nsv_allowupload 1\npausable 0\ndecalfrequency 40\nmp_falldamage 0\nsv_cheats 0\nsv_lan 0\nsv_maxrate 20000\nsv_minrate 4000\nexec listip.cfg",
    "mp_autoteambalance": true,
    "mp_friendlyfire": false,
    "mp_autokick": true,
    "hostname": "none"
}

您想使用
ServerSimpleConfigSerializer
从后端->api解析数据,还是想使用此序列化程序保存数据?如果你只想解析数据->api,使用自定义的任何你想要的,你可以尝试
序列化程序。SerializerMethodField
我想用它来保存数据,但我还需要创建一些字段并根据“game\u config”字段返回它们。我可以使用SerializerMethodField,但我也希望能够写入数据。因此,我需要一种方法来计算数据以返回它,但我还需要使用该字段来写入数据。SerializerMethodField是只读的。基本上,我想要的是能够返回这些字段的“计算数据”,但也有可能将数据写入这些字段&然后每个字段的每个值将实际放入“game_config”字段。因此,序列化程序的字段不会写入模型,但这些值将被放入模型中存在的“game_config”字段中。您可以创建一个
serializers.SerializerMethodField
,用于将数据显示到api,以及一个普通字段映射数据库,用于保存模型。类似于
game\u config\u data
是返回api的
SerializerMethodField
,而
game\u config
save
后端的
normal