Django rest框架xml特殊ch

2024-04-26 13:21:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个带有CharField的模型,它有时具有特殊的特性(遗留应用程序)。在

class Jobmst(models.Model):
    jobmst_id = models.IntegerField(primary_key=True, db_column='jobmst_id')
    jobmst_type = models.SmallIntegerField()
    jobmst_prntid = models.IntegerField(blank=True, null=True)
    jobmst_active = models.CharField(max_length=1, blank=True)
    evntmst_id = models.ForeignKey(Evntmst, db_column='evntmst_id', related_name='calendar_definition', verbose_name='calendar', blank=True, null=True)
    jobmst_evntoffset = models.SmallIntegerField(blank=True, null=True)
    jobmst_name = models.CharField(blank=True)
    jobmst_mode = models.SmallIntegerField(blank=True, null=True)
    jobmst_owner = models.ForeignKey(Owner, db_column='jobmst_owner', verbose_name='owner')
    jobmst_desc = models.CharField(blank=True) # This field type is a guess.
    jobmst_crttm = models.DateTimeField()
    jobdtl_id = models.OneToOneField(Jobdtl, db_column='jobdtl_id', verbose_name='details')
    jobmst_lstchgtm = models.DateTimeField(blank=True, null=True)
    jobmst_runbook = models.CharField(blank=True) # This field type is a guess.
    jobcls_id = models.IntegerField(blank=True, null=True)
    jobmst_prntname = models.CharField(blank=True)
    jobmst_alias = models.CharField(max_length=10, blank=True)
    jobmst_dirty = models.CharField(max_length=1, blank=True)
    def __unicode__(self):
        return self.jobmst_name   
    class Meta:
        managed = False
        db_table = 'jobmst'

如果我尝试使用Django Rest框架的标准XML格式,那么它将失败,因为它是设计不当的XML。在

^{pr2}$

原因是,如果在数据库上执行SQL查询,则jobmst_runbook字段(如果包含URL)有一个隐藏字符-

https://wiki:8443/display/IO/MDS+Tidal-FTP+Troubleshooting

如何让模型自动删除特殊字符,还是从视图中删除?或者,有没有一种方法可以更改XML呈现器的编码?在


Tags: nameidtruedbmodelstypecolumnnull
1条回答
网友
1楼 · 发布于 2024-04-26 13:21:12

我最后用我的序列化程序剥离了字符代码-

class DefinitionSerializer(serializers.ModelSerializer):
    runbook_url = serializers.SerializerMethodField('get_url')
#    dependencies = serializers.RelatedField(many=True)
    jobdep = serializers.HyperlinkedRelatedField(
        source='jobdep_set', # this is the model class name (and add set, this is how you call the reverse relation of bar)
        view_name='jobdep-detail' # the name of the URL, required
    )
#    triggers = serializers.RelatedField(many=True)
    trgmst = serializers.HyperlinkedRelatedField(
        source='trgmst_set', # this is the model class name (and add set, this is how you call the reverse relation of bar)
        view_name='trgmst-detail' # the name of the URL, required
    )

    class Meta:
        model = Jobmst
        resource_name = 'jobmst'
        depth = 2
        fields = ('jobmst_id', 'jobmst_type', 'jobmst_prntid', 'jobmst_active', 'evntmst_id',
                    'jobmst_evntoffset', 'jobmst_name', 'jobmst_mode', 'jobmst_owner', 'jobmst_desc',
                    'jobmst_crttm', 'jobdtl_id', 'jobmst_lstchgtm', 'runbook_url', 'jobcls_id', 'jobmst_prntname',
                    'jobmst_alias', 'jobmst_dirty', 'job_dependencies', 'job_events')

    def get_url(self, obj):
        if obj.jobmst_runbook == None:
            pass
        else:
            return force_text(obj.jobmst_runbook[:-5])

相关问题 更多 >