2016-11-24 25 views
0

在我的數據庫中,我有一個nome字段,在這個charfield中,所有數據都是大寫字母。我需要返回標題格式,只是title()方法。 示例:如何在django休息序列化上捕獲字母

我的字段名稱中的數據:CAFE SANTA CLARA SOLUVEL GRAN。 RF 50G-12501

我需要回到這樣的:咖啡廳聖克拉拉Soluve大RF 50G-12501

我使用Django休息串返回這個數據。

最好的辦法是做什麼?在我的模型,序列化類或我的視圖?

Tks!

型號:

class Produto(models.Model): 
    def __str__(self): 
     return self.nome.encode('utf-8') 

    def __unicode__(self): 
     return self.nome.encode('utf-8') 

    categoria = models.ForeignKey(ProdutoCategoria, null=True, blank=True) 
    marca = models.ForeignKey(ProdutoMarca, null=True) 
    nome = models.CharField(max_length=256, null=True) #its this column 
    unidade = models.CharField(max_length=256, null=True, db_column='unid') 
    ean = models.CharField(max_length=256, null=True) 
    ncm = models.DecimalField(max_digits=65, null=True, decimal_places=2) 
    fator = models.DecimalField(max_digits=100, null=True, decimal_places=2) 
    fornecedor = models.CharField(max_length=256, null=True) 
    imagem = models.TextField(blank=True, null=True) 
    id_externo = models.IntegerField(null=True, blank=True) 
    top = models.NullBooleanField(null=True, blank=True) 

串行:

class ProdutoSerializer(serializers.ModelSerializer): 
    marca = serializers.CharField(source='marca.nome') 
    categoria_pai = serializers.IntegerField(source='categoria.pai.id') 
    class Meta: 
     model = Produto 
     fields = (
      'ean', 
      'id', 
      'nome', 
      'imagem', 
      'marca', 
      'categoria', 
      'categoria_pai' 
     ) 
+0

爲什麼要以這種格式返回它?我會建議讓客戶端的領域轉型。如果你不想這樣做,在這種情況下,你可以創建序列化方法,並將這些方法映射到這些字段中,以防萬一它們在許多視圖中被複制。如果是單視圖。更好地轉換視圖中的序列化結果 –

回答

0

最好的辦法是使用你的串行:

事情是這樣的:

class ServiceSerializer(serializers.ModelSerializer): 
    category = ServiceCategorySerializer() 

    service = serializers.SerializerMethodField() 

    def get_service(self, obj): 
     return obj.service.upper() if obj.service else None 

這是第一種方式:) 二是改變旅遊to_representation,像這樣:

class ServiceSerializer(serializers.ModelSerializer): 
    category = ServiceCategorySerializer() 

    class Meta: 
     model = Service 
     fields = ('service', 'category') 

    def to_representation(self, instance): 
     data = super(ServiceSerializer, self).to_representation(instance=instance) 
     data['service'] = data['service'].lower() if data['service'] else data['services'] 
     return data 

的問題是,每次:)之前保存 - 你應該扭轉這一進程 - 尤其是在第二種情況下。但在第一種情況下 - 您也將從前面獲得更改後的值,因此基本上在一段有限的時間後,您將重寫所有DB行;)

正如有人建議的 - 爲什麼不想在Front側?

相關問題