【发布时间】:2018-07-09 15:13:03
【问题描述】:
我同时使用 react 和 django,我似乎遇到了一个大问题。我在这个网站上找到的大多数解决方案都建议检查模板是否有重复,但我没有使用 django 的默认模板引擎。当我使用 model_to_dict(driver_object) 时出现此错误。驱动程序对象有一张我在模型中设置为 null=true 的照片。请帮助我,我不知道如何解决它
models.py
class Person(SoftDeletionModel):
name = CharField(max_length=64)
email = CharField(blank=True, null=True, max_length=64)
contact_no = PositiveIntegerField()
address = CharField(max_length=256)
birth_date = DateField()
sex = CharField(max_length=1, choices=SEX)
photo = FileField(default='client/src/images/users.png')
class Driver(Person):
user = OneToOneField(User, on_delete=models.CASCADE, null=True)
application_date = DateField()
views.py
user_type = SignInView.get_user_type(user)
user_staff = SignInView.get_user_staff(user_type, user)
return Response(data={
"token": token.key,
"user": model_to_dict(user),
"user_type": user_type,
"user_staff": model_to_dict(user_staff)
}, status=200)
@staticmethod
def get_user_staff(user_type, user):
if user_type == "system_admin":
return user
if user_type == "driver":
return Driver.objects.get(user=user)
if user_type == "supervisor":
return Supervisor.objects.get(user=user)
if user_type == "operations_manager":
return OperationsManager.objects.get(user=user)
if user_type == "clerk":
return Clerk.objects.get(user=user)
我认为问题的根源在于 django 抛出错误而不是在照片为 null 时返回 None。有什么解决方法吗?请帮忙
追溯
Traceback (most recent call last):
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/django/core/handlers/exception.py", line 35, in inner
response = get_response(request)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/django/core/handlers/base.py", line 158, in _get_response
response = self.process_exception_by_middleware(e, request)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/django/core/handlers/base.py", line 156, in _get_response
response = response.render()
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/django/template/response.py", line 106, in render
self.content = self.rendered_content
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/rest_framework/response.py", line 72, in rendered_content
ret = renderer.render(self.data, accepted_media_type, context)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/rest_framework/renderers.py", line 105, in render
allow_nan=not self.strict, separators=separators
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/rest_framework/utils/json.py", line 28, in dumps
return json.dumps(*args, **kwargs)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/json/__init__.py", line 238, in dumps
**kw).encode(obj)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/json/encoder.py", line 199, in encode
chunks = self.iterencode(o, _one_shot=True)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/json/encoder.py", line 257, in iterencode
return _iterencode(o, 0)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/rest_framework/utils/encoders.py", line 67, in default
return tuple(item for item in obj)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/rest_framework/utils/encoders.py", line 67, in <genexpr>
return tuple(item for item in obj)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/django/core/files/base.py", line 91, in __iter__
for chunk in self.chunks():
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/django/core/files/base.py", line 66, in chunks
self.seek(0)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/django/core/files/utils.py", line 20, in <lambda>
seek = property(lambda self: self.file.seek)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/django/db/models/fields/files.py", line 41, in _get_file
self._require_file()
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/django/db/models/fields/files.py", line 38, in _require_file
raise ValueError("The '%s' attribute has no file associated with it." % self.field.name)
ValueError: The 'photo' attribute has no file associated with it.
【问题讨论】:
-
请发布完整的回溯。我认为该错误与您发布的内容无关。
-
您好!我用回溯编辑它
-
你为什么不使用序列化程序?这正是他们的目的。您绕过了 DRF 的大部分要点。
标签: python django reactjs django-rest-framework