2014-08-27 76 views
0

如何使用django ModelSerializer基于同一模型中的其他字段验证模型属性。示例模型代码:基于同一模型中其他字段的REST django字段验证器

class LeadSerializer(serializers.ModelSerializer): 
    class Meta: 
     model = Lead 
     fields = (
      'name','mobile','email','source', 
      'referred_by_biz', 
      'referred_by_ap') 

如果输入源是“B”,然后referred_by_biz'(外键的值)不能为空,如果源是‘A’,那么‘referred_by_ap’不能为空/空(外键)。我怎样才能在使用验证方法上做到这一点?我刚开始使用REST框架。我使用curl来获取相同的url。

回答

0

像这样的事情或许应该工作:

def validate(self, attrs): 
    if attrs['source'] == 'A' and attrs['referred_by_ap'] == '': 
     raise serializers.ValidationError('referred_by_ap cannot be blank') 
    if attrs['source'] == 'B' and attrs['referred_by_biz'] == '': 
     raise serializers.ValidationError('referred_by_biz cannot be blank') 
    return attrs 
+0

我已经尝试了上面没有工作,所以我贴 – user956424 2014-08-27 11:04:49

+1

什么部分不工作?该方法是否从未调用(只有在所有其他验证通过时才会调用该方法)还是无效值仍然通过并且不会引发异常? – Zorba 2014-08-27 11:18:04

+0

方法从来没有调用也不会引发任何异常 – user956424 2014-08-27 12:06:14

相关问题