首页 > 解决方案 > Django:必须给出 hex、bytes、bytes_le、fields 或 int 参数之一

问题描述

我正在尝试使用 Django 在 API 中基于 UUIDAutoField 过滤数据。我正在使用 PostgreSQL,但是在从移动应用程序发送数据时,我有一个字符串,并且该字符串 UUID 在 API 级别与相同的 UUID 不匹配,这给了我这个错误:

/api/updatestate/ 处的 TypeError 必须给出 hex、bytes、bytes_le、fields 或 int 参数之一

当我从 API 请求中获取字符串类型 uuid 时,我正在这样做

empId = uuid.UUID(request.POST.get('employee_id'))

Traceback:

File "/app/.heroku/python/lib/python3.6/site-packages/django/core/handlers/exception.py" in inner
  34.             response = get_response(request)

File "/app/.heroku/python/lib/python3.6/site-packages/django/core/handlers/base.py" in _get_response
  126.                 response = self.process_exception_by_middleware(e, request)

File "/app/.heroku/python/lib/python3.6/site-packages/django/core/handlers/base.py" in _get_response
  124.                 response = wrapped_callback(request, *callback_args, **callback_kwargs)

File "/app/.heroku/python/lib/python3.6/site-packages/django/views/decorators/csrf.py" in wrapped_view
  54.         return view_func(*args, **kwargs)

File "/app/.heroku/python/lib/python3.6/site-packages/django/views/generic/base.py" in view
  68.             return self.dispatch(request, *args, **kwargs)

File "/app/.heroku/python/lib/python3.6/site-packages/rest_framework/views.py" in dispatch
  483.             response = self.handle_exception(exc)

File "/app/.heroku/python/lib/python3.6/site-packages/rest_framework/views.py" in handle_exception
  443.             self.raise_uncaught_exception(exc)

File "/app/.heroku/python/lib/python3.6/site-packages/rest_framework/views.py" in dispatch
  480.             response = handler(request, *args, **kwargs)

File "/app/.heroku/python/lib/python3.6/site-packages/rest_framework/decorators.py" in handler
  53.             return func(*args, **kwargs)

File "/app/cfkcapi/views.py" in checkstate
  78.         empId = uuid.UUID(request.POST.get('employee_id'))

File "/app/.heroku/python/lib/python3.6/uuid.py" in __init__
  134.             raise TypeError('one of the hex, bytes, bytes_le, fields, '

Exception Type: TypeError at /api/updatestate/
Exception Value: one of the hex, bytes, bytes_le, fields, or int arguments must be given

标签: pythondjango

解决方案


错误消息准确地告诉您问题出在哪里:您需要在调用时指定其中一个参数uuid.UUID(在 views.py 的第 78 行)。 文档很清楚:

必须给出 hex、bytes、bytes_le、fields 或 int 中的一个。


推荐阅读