Python ValueError:The';照片';属性没有与其关联的文件
我同时使用react和django,似乎遇到了一个大问题。我在这个网站上找到的大多数解决方案都建议检查模板是否重复,但我没有使用django的默认模板引擎。当我使用model_to_dict(driver_object)时会出现此错误。驱动程序对象有一张照片,我在模型中将其设置为null=true。请帮帮我,我不知道怎么修 型号.pyPython ValueError:The';照片';属性没有与其关联的文件,python,django,reactjs,django-rest-framework,Python,Django,Reactjs,Django Rest Framework,我同时使用react和django,似乎遇到了一个大问题。我在这个网站上找到的大多数解决方案都建议检查模板是否重复,但我没有使用django的默认模板引擎。当我使用model_to_dict(driver_object)时会出现此错误。驱动程序对象有一张照片,我在模型中将其设置为null=true。请帮帮我,我不知道怎么修 型号.py class Person(SoftDeletionModel): name = CharField(max_length=64) email =
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()
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)
视图.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()
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抛出了一个错误,而不是在照片为空时返回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.
回溯(最近一次呼叫最后一次):
文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/django/core/handlers/exception.py”,内文第35行
响应=获取响应(请求)
文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site packages/django/core/handlers/base.py”,第158行,在“get”响应中
response=self.process\u异常\u由\u中间件(e,请求)
文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site packages/django/core/handlers/base.py”,第156行,在“get”响应中
response=response.render()
文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/django/template/response.py”,第106行,呈现
self.content=自渲染内容
文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site packages/rest\u framework/response.py”,第72行,呈现内容
ret=renderer.render(self.data、接受的媒体类型、上下文)
文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site packages/rest\u framework/renderers.py”,第105行,在render中
allow_nan=不严格,分隔符=分隔符
文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/rest\u-framework/utils/json.py”,第28行,转储文件
返回json.dumps(*args,**kwargs)
文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/json/_init__.py”,第238行,转储中
**千瓦)。编码(obj)
encode中的文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/json/encoder.py”,第199行
chunks=self.iterencode(o,\u one\u shot=True)
文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/json/encoder.py”,第257行,在iterencode中
返回_iterencode(o,0)
默认情况下,文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site packages/rest_framework/utils/encoders.py”第67行
返回元组(对象中项目对应的项目)
文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site packages/rest_framework/utils/encoders.py”,第67行,在
返回元组(对象中项目对应的项目)
文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site packages/django/core/files/base.py”,第91行,在__
对于self.chunks()中的chunk:
文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site packages/django/core/files/base.py”,第66行,分块
self.seek(0)
文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site packages/django/core/files/utils.py”,第20行,在
seek=property(lambda self:self.file.seek)
文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site packages/django/db/models/fields/files.py”,第41行,在get文件中
self.\u需要\u文件()
文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site packages/django/db/models/fields/files.py”,第38行,在文件中
raise VALUERROR(““%s”属性没有与其关联的文件。”%self.field.name)
ValueError:“photo”属性没有与之关联的文件。
我通过在返回响应之前将驱动程序对象放入序列化程序来修复它,如下所示:
if user_type == "driver":
driver = DriverSerializer(Driver.objects.get(user=user))
return driver.data
请发布完整的回溯。我认为这个错误与你发布的内容无关。你好!我用回溯法编辑了它为什么不使用序列化程序?这正是他们的目的。您正在绕过DRF的大部分要点。这似乎与您访问此属性的方式有关,可能在您的模板中。im将数据存储在localStorage中,因为它在客户端呈现。但就是这样,所以我不知道为什么会这样