2015-09-11 32 views
3

我有一個使用DRF的模型和序列化程序。使用下面的代碼,當表單通過ajax提交併且所有字段都爲空時,我得到一個錯誤description,「這個字段不能爲空」,這正是我想要的。但是對於日期時間字段,我會收到「日期時間格式錯誤」。爲什麼它不給我「日期時間字段的這個字段不能爲空」?它在進行格式驗證之前會評估它是否有價值。根據文檔,Required默認情況下應該是true,並且在Model上也是必需的。Django Rest Framework給出「日期時間格式錯誤」

我該如何簡單地說「這個字段不能爲空」或類似的東西?現在我正在通過在調用序列化程序的視圖中進行驗證來解決它。

class RoomEventSerializer(serializers.ModelSerializer): 
    start_datetime = serializers.DateTimeField(input_formats=(['%m/%d/%Y %I:%M %p', 'iso-8601'])) 
    end_datetime = serializers.DateTimeField(input_formats=(['%m/%d/%Y %I:%M %p', 'iso-8601'])) 

    class Meta: 
     model = RoomEvent 
     fields = ('start_datetime', 'end_datetime', 'description', 'room', 'start_hour', 'start_min', 'start_ampm', 'end_hour', 'end_min', 'end_ampm', 'requesting_user', 'type', 'approval_status') 

    def validate(self, data): 
     if data['start_datetime'] >= data['end_datetime']: 
      raise serializers.ValidationError('Start date must be prior to end date.') 
     return data 

class RoomEvent(models.Model): 
    description = models.CharField(max_length=250) 
    start_datetime = models.DateTimeField() 
    end_datetime = models.DateTimeField() 
+1

在測試代碼時,我在Datetime格式錯誤之前收到「此字段是必需的」錯誤。也許你在回答中使用@dukebody建議的舊版DRF。 –

回答

相關問題