在我的数据库中,我有一个nome字段,在这个字段中,所有数据都是大写的。我需要以标题格式返回,只需要title()方法。 例如:
我的字段名称中的数据: CAFE SANTA CLARA SOLUVEL GRAN。 RF 50G-12501
我需要这样的回报: Cafe Santa Clara Soluve Gran Rf 50G-12501
我使用django rest serializer来返回这些数据。
这是最好的方法吗?在我的模型中,序列化程序类或我的视图?
韩国社交协会!
模型:
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
这是第一种方式:) 第二个是更改tour 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
问题在于:)在每次保存之前 - 你应该扭转这个过程 - 特别是在第二种情况下。但是在第一种情况下 - 你也会从前面得到改变的值,所以基本上在一段有限的时间之后你将重写所有数据库行;)
有人建议 - 为什么你不想在正面做这个?