【发布时间】:2014-08-21 22:05:32
【问题描述】:
我目前正在扩展 Django rest_framework 的 serializers.WritableField 以(毫不奇怪)将数据转换为更前端友好的格式。我的代码如下所示:
class FooField(serializers.WritableField):
def from_native(self, value):
return #makeFoo
def to_native(self, value):
return #undoFoo
然后我有一个如下所示的序列化程序:
class FooUsingSerializer(serializers.ModelSerializer):
the_field = FooField(source='a_model_field')
def validate_the_field(self,attrs):
#validate result
return attrs
问题是,在调用 validate_the_field 之前调用 from_native 并且原始数据甚至没有传递给 validate_the_field,所以如果传入垃圾数据(在我的具体情况下,它会是任何不是有效日期的数据) 而不是 validate_the_field 捕获它,我将返回 500 错误。我考虑过这样的事情:
def from_native(self, value):
try:
return #makeFoo
except:
return #a flag to show that the data wasn't valid
但这感觉就像处理问题的一种 hacky 方式,特别是因为 Django rest_framework 通常很干净。有谁知道处理垃圾数据的方法可以很好地与 from_native 配合使用?
【问题讨论】:
标签: python django django-rest-framework