Browse Source

Добавил картинки для постов.

В том числе их отображение в админке.
master
Дмитрий 3 years ago
parent
commit
16fb09f05e
  1. 11
      blog/posts/admin.py
  2. 22
      blog/posts/models.py

11
blog/posts/admin.py

@ -1,6 +1,12 @@
from django.contrib import admin 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) @admin.register(Post)
@ -9,3 +15,6 @@ class PostAdmin(admin.ModelAdmin):
("Основное", {"classes": ("wide",), "fields": ("title", "text")}), ("Основное", {"classes": ("wide",), "fields": ("title", "text")}),
("Дополнительно", {"classes": ("collapse",), "fields": ("pub_date",)}), ("Дополнительно", {"classes": ("collapse",), "fields": ("pub_date",)}),
) )
inlines = [
ImageInline,
]

22
blog/posts/models.py

@ -1,4 +1,5 @@
from django.db import models from django.db import models
from django.utils import timezone
import re import re
@ -9,13 +10,6 @@ class Post(models.Model):
text = models.TextField() text = models.TextField()
pub_date = models.DateTimeField("date published") pub_date = models.DateTimeField("date published")
@property
def org_text(self):
"""Вернет text заменив html на org."""
text = self.text
text = re.sub(r"(<strong>(.+?)</strong>)", r"\*\2\*")
return text
def __str__(self): def __str__(self):
return self.title return self.title
@ -27,3 +21,17 @@ class Post(models.Model):
class Meta: class Meta:
verbose_name = "Статья" verbose_name = "Статья"
verbose_name_plural = "Статьи" 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)

Loading…
Cancel
Save