我正在使用Django 1.6。我有一个上传图像文件的模型。
class Image(models.Model):
id = models.AutoField(primary_key=True)
name = models.CharField(max_length=255)
url = models.ImageField(upload_to=get_image_path,
null=True,
blank=True,
height_field = 'height',
width_field = 'width',
verbose_name='Image')
height = models.IntegerField(blank=True)
width = models.IntegerField(blank=True)
size = models.IntegerField(blank=True)
format = models.CharField(max_length=50)
caption = models.CharField(max_length=255)
def clean(self):
self.size = self.url.size
class Meta:
db_table = 'image'
如您所见,我在调用clean()
方法时存储图像的大小。这适用于我想做的事情,但这是最佳做法吗?保存时是否有更好的方法自动保存图像的文件大小?
我的问题的第二部分是如何获取内容类型?
谢谢, 标记
答案 0 :(得分:0)
Model.clean()应该用于验证 - 不要用它来更新/保存数据,而是用它来纠正任何无效数据(或抛出异常/错误信息)。
考虑到您可以从ImageField访问它,您可能想要考虑甚至不将图像的大小存储在数据库中 - 它消除了数据随着时间的推移而变得不一致的可能性。
我相信这question/answer应该解决你的第二个问题。
答案 1 :(得分:0)