Django REST框架关系所有者

Django REST框架关系所有者,django,django-rest-framework,Django,Django Rest Framework,我正在尝试使用Django REST框架创建对象。一切正常,除了检查关系的所有者。我可以插入不属于我的关系行。模式示例: 汽车: 身份证件 名称 类别识别码 用户id 类别: 身份证件 名称 用户id 我可以用我当前的用户id插入汽车,它是在预保存中填写的,但类别id可以是任何存在的,它不检查类别的用户id。我该怎么做呢?如果我错了,请纠正我的错误,但您的意思是,现在可以插入具有任何类别id的汽车对象,但您希望强制执行插入的任何汽车对象都有一个类别,其用户id等于汽车对象中的用户id 执行此验证

我正在尝试使用Django REST框架创建对象。一切正常,除了检查关系的所有者。我可以插入不属于我的关系行。模式示例:

汽车: 身份证件 名称 类别识别码 用户id 类别: 身份证件 名称 用户id
我可以用我当前的用户id插入汽车,它是在预保存中填写的,但类别id可以是任何存在的,它不检查类别的用户id。我该怎么做呢?

如果我错了,请纠正我的错误,但您的意思是,现在可以插入具有任何类别id的汽车对象,但您希望强制执行插入的任何汽车对象都有一个类别,其用户id等于汽车对象中的用户id

执行此验证的一种方法是在序列化程序中执行。由于要执行的验证取决于多个字段的值,因此您希望覆盖汽车模型序列化器类中的对象级验证方法:

def validate(self, data):
    cat_id = data['category_id']
    # You may have to change the below line depending on how user_id is determined
    user_id = self.context['request'].user.id
    try:
        category = Category.objects.get(id=cat_id)
        if category.user_id != user_id:
            raise ValidationError({'category_id': 'Category must belong to the user'})
    except Category.DoesNotExist:
        # Do something
        raise ValidationError({'category_id': 'invalid id'})
    return data