我有一個使用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()
在測試代碼時,我在Datetime格式錯誤之前收到「此字段是必需的」錯誤。也許你在回答中使用@dukebody建議的舊版DRF。 –