我正在Windows机器上编码,但我在Linux上运行我的生产站点。
当试图使用从生产系统复制的数据库到达我的开发机器上的页面时,如果这些文件在本地不存在,则当我试图列出文件时会出现错误。这和预期的一样,因为我只是复制了DB而不是文件。我不需要/不需要这些文件,但我也不希望出现以下错误:
在/126/ WindowsError /WindowsError 3处系统找不到指定的路径:WindowsError
与其抛出错误,我更愿意在模板中处理这个问题,如下所示:
{% if doc.data %}{{ doc.data.size | filesizeformat }}{% else %}File not found{% endif %}不过,这不管用。doc.data确实存在,因为DB知道这个文件位置的值。但是这个文件在磁盘上不可用。
有什么方法能正确捕捉到这个,最好是在模板中吗?
我的模特:
class Document(models.Model):
data = models.FileField(upload_to="documents/%Y/%m/%d")发布于 2016-10-11 18:06:07
这不是最好的解决方案,但可以在views.py中(模板中没有)实现如下的解决方案:
documents = Document.objects.all()
if documents:
exclude_list = []
for doc in documents:
try:
local_file = doc.data.file
except IOError:
exclude_list.append(doc.id)
documents = documents.exclude(id__in=exclude_list)
context_dict['documents'] = documents这样,如果没有找到有效的本地文件,文档就不会显示在模板中。
https://stackoverflow.com/questions/39983598
复制相似问题