2016-05-31 7 views
1

Ich habe eine Django REST API eingerichtet und es funktioniert ordnungsgemäß für gültige eingehende Anforderungen. In einigen Anforderungen sind einige Felder leer. Gibt es eine Möglichkeit, Standardersatzwerte für diese leeren Felder im Serializer bereitzustellen, damit sie den Validierungstest bestehen? Zum Beispiel habe ich den folgenden Serialisierer:Django REST Ersetzen leer bis Standard

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 wird manchmal nicht zur Verfügung gestellt. Wie oben gezeigt, habe ich versucht, es auf 0 auf Standard, aber immer noch

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

Ich weiß nicht, ob es einen Einfluss hat, aber meine Wünsche sind Arrays und ich bin mit dem Serializer mit der vielen = Option Wahr.

Ein Beispiel unvollständige Anforderung würde wie folgt aussehen:

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

überprüfen Sie bitte, ob dies hilfreich .. http://stackoverflow.com/questions/19780731/django-rest-framework-serializer-field-required-false – AceLearn

+0

@ Trying2Learn: danke, habe ich diesen aber konnte nicht die Lösung funktioniert ... – Botond

Antwort

1

Sie diesen Fehler haben, weil 0 nicht dezimal. Versuchen default=0.0 oder default=None

aktualisieren

Ein Beispiel unvollständige Anforderung würde wie folgt aussehen:

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

hier Problem ist, dass Sie myfield1 als leere Strings "myfield1": "" liefern. Ihre Anfrage sollte so aussehen.

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

Wenn kein Wert für myfield1 ist gerade nicht setzen es in Anfrage. Ansonsten müssen Sie Daten liefern, die mindestens dem Typ entsprechen. Da, wenn das Feld nicht leer ist, DRF eine Validierung durchführt, wird default nur verwendet, wenn für das Feld in der gesendeten Anforderung kein Wert vorhanden ist.

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

+0

keiner von ihnen scheint das Problem zu lösen ... – Botond

+0

@Botond Als es wahrscheinlich auf Ihre Anfrage bezogen ist. Können Sie ein Anforderungsbeispiel hinzufügen, das Ihnen diesen Fehler anzeigt? –

+0

Ich habe eine Beispielanforderung hinzugefügt, die einen Fehler verursacht. – Botond