构建一个应用程序来列出要检查的报告。实际检验报告将提供下载。使用django-db-file-storage将报表保存到数据库。在
要处理的记录很多,所以要编写一个脚本来批量执行所有操作。在管理.pyshell抛出一个错误。在
from django.core.files.storage import default_storage
from django.core.files.base import ContentFile
from inspections.models import InspectionInformation, RestaurantInformation
file = open('/docs/Data/2011/12/12-07-11_1498.pdf', 'r').read()
InspectionInformation(
insp_rest_permit=RestaurantInformation.objects.get(rest_permit=int('1814')),
insp_date='2011-12-12',
insp_score='100',
insp_inspector='Philip',
insp_report=default_storage.save('report.pdf', ContentFile(file))
).save()
回溯
^{pr2}$型号
from django.db import models
class RestaurantInformation(models.Model):
rest_permit = models.IntegerField(unique=True, verbose_name='Permit')
rest_name = models.CharField(max_length=200, verbose_name='Name')
rest_address = models.CharField(max_length=200, verbose_name='Address')
rest_city = models.CharField(max_length=100, verbose_name='City')
rest_zip = models.IntegerField(verbose_name='Zip Code')
rest_owner = models.CharField(max_length=200, verbose_name='Owner')
rest_latitude = models.CharField(max_length=40, verbose_name='Latitude')
rest_longitude = models.CharField(max_length=40, verbose_name='Longitude')
class Meta:
ordering = ['rest_name']
def __unicode__(self):
return self.rest_name + ', ' + self.rest_address + ', ' + self.rest_city
class InspectionInformation(models.Model):
insp_rest_permit = models.ForeignKey(RestaurantInformation, null=False, to_field='rest_permit')
insp_score = models.DecimalField(verbose_name='Score', decimal_places=2, max_digits=5)
insp_date = models.DateField(verbose_name='Date')
insp_inspector = models.CharField(max_length=200, verbose_name='Inspector')
insp_report = models.FileField(upload_to='restaurants.InspectionFile/bytes/filename/mimetype',
blank=True, null=True, verbose_name='Inspection Report')
class Meta:
unique_together = ("insp_rest_permit", "insp_score", "insp_date")
ordering = ['insp_date']
class InspectionFile(models.Model):
bytes = models.TextField()
filename = models.CharField(max_length=255)
mimetype = models.CharField(max_length=50)
1.看起来像数据库文件_存储.存储.保存()要求指定的自定义格式与模型和文件名一起使用,例如。“console.ConsolePicture/bytes/filename/mimetype“+文件名。在
所以作为你的例子,而不是
是的
^{pr2}$我看了一下文档,不清楚为什么要这样做,因为这违反了DRY,让您输入同一个东西两次,但它们在DatabaseFileStorage类中使用相同的格式。在
2.看起来save方法(第60行)中有一个bug,其中
应改为
您传递给它的文件应该是具有content_type属性的文件,因此可能是Django SimpleUploadedFile:
我认为这是一个bug是因为当我试图传入一个模拟对象时content.file.content_类型“后来我遇到了一个Python内核库异常。在
相关问题 更多 >
编程相关推荐