我的DataSerliazer
中有一个自定义验证函数,它检查两个参数(mrange,mthreshold)。验证函数检查过帐时是否只需设置其中一个参数。在
class DataSerializer(serializers.ModelSerializer):
emails = serializers.ListField(child = serializers.EmailField())
class Meta:
model = AIData
fields = ('id', 'name', 'created', 'username', 'token',
'expression','key','threshold' ,'evaluator', 'range','emails','metric_name', 'status')
def validate(self,attrs):
mrange = attrs.get("metric_range")
mthreshold = attrs.get("metric_threshold")
if (mrange == None or mrange == " ") and (mthreshold == None or mthreshold == " "):
raise serializers.ValidationError({'error': 'Cannot have both range and threshold empty'})
elif mrange != None and mthreshold != None:
raise serializers.ValidationError({'error': 'Cannot set both range and threshold'})
在我的视图.py文件
^{pr2}$目前,我必须编写antorAIAnotherSerializerMethod
,这样它就不会隐式调用DataSerializer中的validate函数。这是为了避免在对象创建期间检查2个参数。一旦创建了对象,我就不想再检查相同的函数了。有没有更简洁的方法来做同样的事?我最好避免为同一模型编写2个序列化程序。在
据我所知,rest框架库没有类似的东西。在
我的方法是覆盖
__init__
,并添加您自己的变量来检查这一点。在然后我会这样使用它:
^{pr2}$您可以将^{} data 传递给可能包含请求本身的序列化程序。在
通过调用自我语境. 在
此解决方案确实使提供上下文数据更容易,而不重写
__init__
。在相关问题 更多 >
编程相关推荐