2016-05-31 23 views
1

我有一個Django REST API設置,它對於有效的傳入請求正常工作。在一些請求中,一些字段是空的。有沒有一種方法可以爲序列化程序中的空字段提供默認替換值,以便他們通過驗證測試?例如,我有以下序列化程序: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."] 

我不知道是否有任何影響,但我的要求是數組和我使用的選項很多=串行真正。

一個例子不完整的請求將是這樣的:

[{"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

你有這個錯誤,因爲0是不是小數。 嘗試default=0.0default=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