django序列化程序中的对象级验证无法识别函数

django序列化程序中的对象级验证无法识别函数,django,validation,django-rest-framework,django-serializer,Django,Validation,Django Rest Framework,Django Serializer,使用这个序列化程序,一切都非常完美,但是我决定添加对象级验证 发生的情况如下: class serializer_blahblah(serializers.ModelSerializer): """Serializer for ProfileUsefulRecommendations.""" profile_id = serializers.UUIDField() recommendation_id = ser

使用这个序列化程序,一切都非常完美,但是我决定添加对象级验证
发生的情况如下:

class serializer_blahblah(serializers.ModelSerializer):
    """Serializer for ProfileUsefulRecommendations."""

    profile_id = serializers.UUIDField()
    recommendation_id = serializers.UUIDField()

    class Meta:
        """Meta class."""

        fields = (
            "id",
            "profile_id",
    ...
打印:

    def validate(self, data):
        recommendation_id = str(data["recommendation_id"])
        print("recommendation: ", recommendation_id)
        validate_recommendation_id(recommendation_id=recommendation_id)
        print(validate_recommendation_id(recommendation_id=recommendation_id))
        return data
它甚至无法识别功能……

然而,若我在单个字段序列化程序中使用完全相同的函数,那个么它运行得很好。但简单地说,我需要它作为对象级别

增加了功能代码:

recommendation:  3a232d0d-0705-4775-8bae-0e2f3d69c96c

这就是为每个字段添加验证的方式

def validate_recommendation_id(recommendation_id):
    try:
        Recommendation.objects.get(id=recommendation_id)
    except Recommendation.DoesNotExist as exception:
        raise serializers.ValidationError(
            {f"{recommendation_id}": "does not exist"}
        ) from exception
    return recommendation_id

你们不需要在
validate
方法中调用它。

实际上,伙计们,我已经提出了这样的解决方案。 我定义了验证函数,而不是验证函数

class serializer_blahblah(serializers.ModelSerializer):
    recommendation_id = serializers.UUIDField()

    def validate_recommendation_id(self, recommendation_id):
        return recommendation_id

后来我调用了序列化程序:

Class CheckIfObjectHasId(queryset, lookup_object)

请,您能添加函数的代码吗?正如我提到的那样,这种方法是有效的,但我需要在validation中使用它。我有两个ID,并且相信如果我创建每个内场函数,它将是冗余的,因此我相信validation()函数将继续。。。但是为什么它不调用函数呢?
recommunication\u id=serializers.UUIDField()
您显然只有一个id。我想我帮不了您,因为我不知道问题出在哪里。实际上,不,我有两个id。也可能你知道我可以在这里发布之前编辑代码,因此我删除了其他字段。
class serializer_blahblah(serializers.ModelSerializer):
    """Serializer for ProfileUsefulRecommendations."""

    profile_id = serializers.UUIDField(
        validators=[
             CheckIfObjectHasId(queryset=Profile.object.all(), lookup_object="id"
        ]
    )