0

我有 Django 模型

class OrderItem(models.Model):
    comment = models.CharField('comment', max_length=255, blank=True)
    ..... 

和其他不重要的领域。

我有这样描述的 spyne 模型

class OrderItemModel(DjangoComplexModel):
    __type_name__ = 'OrderItem'

    class Attributes(DjangoComplexModel.Attributes):
        django_model = OrderItem

和产生响应的函数

@rpc(Int, _returns=Iterable(OrderItemModel)) 
def GetOrderItems(self, id):
     order = get_object(Order, pk=id)
     items = order.objects.all()
     return items

xml描述是

<Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/">
    <Body>
       <SaveOrderItem xmlns="app.sync">
        <model>
           <comment xmlns="app.sync.models">[normalizedString]</comment>
        </model>
       </SaveOrderItem>
        </Body>
</Envelope>

发出请求的服务器然后验证响应,并在发现注释在开始或结束 os 字符串上有空格时引发异常。据我了解, normalizedString 类型不允许使用未剥离的刺。从那种类型的字符串中动态删除空格的任何方法也是如此。我查看了源代码并找到了类定义

class NormalizedString(Unicode):
    __type_name__ = 'normalizedString'
    __extends__ = Unicode

    class Attributes(Unicode.Attributes):
        white_space = "replace"

因此white_space = "replace"在客户端进行检查。

4

1 回答 1

0

我找到了解决这个问题的方法:我只是将默认字段映射器中的 'CharField' 替换为 Unicode 一行

default_model_mapper.register('CharField', primitive.Unicode) 而不是默认的 ('CharField', original.NormalizedString)

在 spyne/util/django.py 中有描述

于 2016-03-23T21:18:28.187 回答