2016-05-31 2 views
1

장고 REST API를 설정했는데 올바른 수신 요청에 대해 올바르게 작동합니다. 일부 요청에서 일부 필드는 비어 있습니다. 거기에 유효성 검사를 통과 할 수 있도록 serializer의 빈 필드에 대한 기본 대체 값을 제공하는 방법이 있습니까? 예를 들어, 다음 시리얼 라이저가 있습니다.Django REST가 비어 있음을 기본값으로 바꿉니다

class SearchRequestSerializer(serializers.ModelSerializer): 

    myfield1 = serializers.DecimalField(max_digits=10, decimal_places=2, coerce_to_string=False, default=0, required=False, allow_null=True) 
    class Meta: 
    model = SearchRequest 
    fields = ('myfield0', 'myfield1') 

myfield1이 제공되지 않는 경우가 있습니다. 위와 같이, 나는 0으로 기본하려고했으나 여전히

"myfield1":["A valid number is required."] 

가 어떤 영향이 있는지 모르겠어요를 받고,하지만 내 요청을 배열하고 나는 옵션이 많은 =와 시리얼 라이저를 사용하고 있습니다 참된. 0이 진수되지 않기 때문에이 오류가 발생하는

[{"myfield0":3, "myfield1":""}, {"myfield0":4, "myfield1":5}] 
+0

이 .. http://stackoverflow.com/questions/19780731/django-rest-framework-serializer-field-required-false – AceLearn

+0

@ Trying2Learn 도움이 있는지 확인하십시오 덕분에, 나는 이것을보고 하지만 솔루션을 작동시키지 못했습니다 ... – Botond

답변

1

: 같은

예 불완전한 요청이 보일 것이다. 시도 default=0.0 또는 default=None

업데이트처럼

예 불완전한 요청이 보일 것이다 : 여기

[{"myfield0":3, "myfield1":""}, {"myfield0":4, "myfield1":5}] 

문제는 당신이 myfield1으로 빈 문자열 "myfield1": ""를 공급하고 있다는 점이다. 귀하의 요청은 다음과 같아야합니다.

[{"myfield0":3}, {"myfield0":4, "myfield1":5}] 

값이없는 경우 myfield1을 요청하지 마십시오. 그렇지 않으면 적어도 유형과 일치하는 데이터를 제공해야합니다. 필드가 비어 있지 않으면 DRF는 유효성 검사를 수행하므로 제출 된 요청에 필드 값이없는 경우에만 default이 사용됩니다.

http://www.django-rest-framework.org/api-guide/fields/#default

+0

그들 중 어느 누구도 문제를 해결하지 못하는 것 같습니다 ... – Botond

+0

@Botond 그것은 아마 당신의 요청과 관련이 있습니다. 이 오류를 제공하는 요청 예제를 추가 할 수 있습니까? –

+0

오류를 생성하는 샘플 요청을 추가했습니다. – Botond

관련 문제