diff --git a/blog/posts/admin.py b/blog/posts/admin.py index 81dc7d8..a4e7999 100644 --- a/blog/posts/admin.py +++ b/blog/posts/admin.py @@ -1,6 +1,12 @@ from django.contrib import admin -from .models import Post +from .models import Post, Image + + +class ImageInline(admin.StackedInline): + model = Image + extra = 1 # количество полей + fields = ("image", "slug") @admin.register(Post) @@ -9,3 +15,6 @@ class PostAdmin(admin.ModelAdmin): ("Основное", {"classes": ("wide",), "fields": ("title", "text")}), ("Дополнительно", {"classes": ("collapse",), "fields": ("pub_date",)}), ) + inlines = [ + ImageInline, + ] diff --git a/blog/posts/models.py b/blog/posts/models.py index 881b15b..d2810c6 100644 --- a/blog/posts/models.py +++ b/blog/posts/models.py @@ -1,4 +1,5 @@ from django.db import models +from django.utils import timezone import re @@ -9,13 +10,6 @@ class Post(models.Model): text = models.TextField() pub_date = models.DateTimeField("date published") - @property - def org_text(self): - """Вернет text заменив html на org.""" - text = self.text - text = re.sub(r"((.+?))", r"\*\2\*") - return text - def __str__(self): return self.title @@ -27,3 +21,17 @@ class Post(models.Model): class Meta: verbose_name = "Статья" verbose_name_plural = "Статьи" + + +class Image(models.Model): + """Изображение в посте. + + Пост может иметь несколько картинок. При удалении поста удаляются + все изображения к нему относящиеся. + + """ + + slug = models.CharField(max_length=250, blank=True, null=True) + image = models.ImageField() + upload_date = models.DateTimeField(default=timezone.now) + post = models.ForeignKey(Post, on_delete=models.CASCADE)