如何显示在django rest的序列化器中验证的字段的标签?
返回json显示错误,但是使用字段的名称而不是Label的名称。
谢谢。
inf_nome = serializers.CharField(label='Nome', max_length=255)
doc_cpf = serializers.CharField(label='CPF', max_length=15)
class Meta:
model = Associado
fields = ('inf_nome', 'doc_cpf')
associado = AssociadoSerializer(data=request.data)
if associado.is_valid():
return Response({'mansagem': 'Sucesso! Up'}, status=HTTP_200_OK)
return JsonResponse(associado.errors)
inf_nome:[“Estecampoéobrigatório。”]
doc_cpf:[“Estecampoéobrigatório。”]
答案 0 :(得分:0)
如何解决错误?
方法1
您必须在inf_nome
(请求有效负载)中提供足够的数据(doc_cpf
和request.data
),
样本有效载荷
{
"inf_nome":"some data 1",
"doc_cpf":"some other data"
}
方法-2您可以通过提供下面的required=False
将这些字段设置为可选字段,
class AssociadoSerializer(serializers.ModelSerializer):
inf_nome = serializers.CharField(label='Nome', max_length=255, required=False)
doc_cpf = serializers.CharField(label='CPF', max_length=15, required=False)
class Meta:
model = Associado
fields = ('inf_nome', 'doc_cpf')
如何在序列化程序响应中显示label
?
我找到了一种方法,(不确定它是一种django方式),它覆盖了to_representation()
方法。因此,您的序列化器将如下所示
class AssociadoSerializer(serializers.ModelSerializer):
inf_nome = serializers.CharField(label='Nome', max_length=255, required=False)
doc_cpf = serializers.CharField(label='CPF', max_length=15, required=False)
class Meta:
model = Associado
fields = ('inf_nome', 'doc_cpf')
def to_representation(self, instance):
return_data = super().to_representation(instance)
copy = return_data.copy()
copy.update(
{"inf_nome_label": self.fields.get('inf_nome').label,
"doc_cpf_label": self.fields.get('doc_cpf').label}
)
return copy
输出串行器响应
{
"inf_nome":"some data 1",
"doc_cpf":"some other data",
"inf_nome_label":"Nome",
"doc_cpf_label":"CPF"
}