基于同一模型其他字段的REST Django字段验证器

0 投票
1 回答
742 浏览
提问于 2025-04-18 18:40

我想知道如何在使用Django的ModelSerializer时,根据同一个模型中的其他字段来验证模型的属性。下面是一个示例模型代码:

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'也不能留空或为null(外键)。我该如何在validate方法中实现这个功能呢?我刚开始使用REST框架,并且我在用curl来获取相应的URL。

1 个回答

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

撰写回答