python-ContentFile未保存在Django模型FileField中
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python-ContentFile未保存在Django模型FileField中,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2043字,纯文字阅读大概需要3分钟。
内容图文
![python-ContentFile未保存在Django模型FileField中](/upload/InfoBanner/zyjiaocheng/694/d782b26687754b389f9b5941021ecdd8.jpg)
在我的Django模型中将字符串另存为文件时,我遇到了问题,因为每当我尝试取回数据时,都会给我一个ValueError(“属性没有关联的文件”).详细信息如下:
模型:
class GeojsonData(models.Model):
dname = models.CharField(max_length=200, unique=True)
gdata = models.FileField(upload_to='data')
def __str__(self):
return self.dname
保存数据的代码:
cf = ContentFile(stringToBeSaved)
gj = GeojsonDatua(dname = namevar, gdata = cf)
gj.save()
尝试读取数据的代码:
def readGeo(data):
f = GeojsonData.objects.all().get(id=data.id).gdata
f.open(mode ='rb')
geo = f.read()
return geo
追溯:
File "C:\Python\Python36-32\lib\site-packages\django\core\handlers\exception.py" in inner
41. response = get_response(request)
File "C:\Python\Python36-32\lib\site-packages\django\core\handlers\base.py" in _get_response
187. response = self.process_exception_by_middleware(e, request)
File "C:\Python\Python36-32\lib\site-packages\django\core\handlers\base.py" in _get_response
185. response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "C:\Python\Python36-32\lib\site-packages\django\contrib\auth\decorators.py" in _wrapped_view
23. return view_func(request, *args, **kwargs)
File "C:\app\views.py" in mapa
80. geostr = app.readGeo.readGeo(d)
File "C:\app\readGeo.py" in readGeo
6. f.open(mode ='rb')
File "C:\Python\Python36-32\lib\site-packages\django\db\models\fields\files.py" in open
80. self._require_file()
File "C:Python\Python36-32\lib\site-packages\django\db\models\fields\files.py" in _require_file
46. raise ValueError("The '%s' attribute has no file associated with it." % self.field.name)
Exception Type: ValueError at /app/map/1
Exception Value: The 'gdata' attribute has no file associated with it.
解决方法:
您需要将ContentFile另存为实际文件.而不是直接将其分配给该字段,您应该调用该字段的save方法并将其传递给:
gj = GeojsonDatua(dname = namevar)
gj.gdata.save('myfilename', cf)
参见the docs.
另请注意,如果您始终像这样创建gdata字段,则可能根本就不需要FileField.也许改用TextField.
内容总结
以上是互联网集市为您收集整理的python-ContentFile未保存在Django模型FileField中全部内容,希望文章能够帮你解决python-ContentFile未保存在Django模型FileField中所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。