【发布时间】:2019-10-19 07:11:47
【问题描述】:
我正在使用 Django 2.x
我有一个用于验证请求的序列化程序。 (不是模型序列化器)
class ExecuteSerializer(serializers.Serializer):
database = serializers.IntegerField(required=True)
query = serializers.CharField(required=True)
user = serializers.HiddenField(
default=serializers.CurrentUserDefault()
)
def validate(self, attrs):
user = attrs.get('user', None)
try:
database = Database.objects.get(pk=attrs.get('database', None), collection__user=user)
except Database.DoesNotExist:
raise ValidationError({
'database': ['Does not exists']
})
attrs['database'] = database
return attrs
database 是对Database 模型的引用。
我希望用户在 database 字段中传递数据库 ID,但在验证后将转换为 database 对象。
我试图覆盖validate() 方法并将database 对象分配给database 字段,但它给出了错误
TypeError: int() argument must be a string, a bytes-like object or a number, not 'Database'
【问题讨论】:
-
validate() 需要字段值字典
-
能否提供
ExecuteSerializer在validate之后使用的异常堆栈和相关代码?
标签: django django-rest-framework