|
|
@@ -5,6 +5,7 @@ from django.contrib.auth.models import User
|
|
|
from django.utils import timezone
|
|
|
from django.urls import reverse
|
|
|
from taggit.managers import TaggableManager
|
|
|
+from PIL import Image
|
|
|
|
|
|
|
|
|
class ArticleColumn(models.Model):
|
|
|
@@ -24,6 +25,7 @@ class ArticlePost(models.Model):
|
|
|
created = models.DateTimeField(default=timezone.now) # 使用timezone.now()时 进行数据迁移会,有警告
|
|
|
updated = models.DateTimeField(default=timezone.now)
|
|
|
total_views = models.PositiveIntegerField(default=0)
|
|
|
+ avatar = models.ImageField(upload_to='article/%Y%m%d/', blank=True)
|
|
|
column = models.ForeignKey(ArticleColumn,
|
|
|
null=True,
|
|
|
blank=True,
|
|
|
@@ -38,3 +40,16 @@ class ArticlePost(models.Model):
|
|
|
|
|
|
def get_absolute_url(self):
|
|
|
return reverse('article:article_detail', args=[self.id])
|
|
|
+
|
|
|
+ def save(self, *args, **kwargs):
|
|
|
+ # 调用原有的save的功能
|
|
|
+ article = super(ArticlePost, self).save(*args, **kwargs)
|
|
|
+ # 固定宽度缩放图片的大小
|
|
|
+ if self.avatar and not kwargs.get('update_fields'):
|
|
|
+ image = Image.open(self.avatar)
|
|
|
+ (x, y) = image.size
|
|
|
+ new_x = 400
|
|
|
+ new_y = int(new_x * (y / x))
|
|
|
+ resized_image = image.resize((new_x, new_y), Image.ANTIALIAS)
|
|
|
+ resized_image.save(self.avatar.path)
|
|
|
+ return article
|