Отображение связанных с постом картинок
Подскажите правильную реализацию.
Пытаюсь использовать django в создании простенького новостного сайта.
При создании новости с адмики, столкнулся с проблемой загрузки нескольких картинок.
Нашел решение с подключением допонительной таблицы. inlines = (PostImageAdmin)
Теперь суть: Вроде мне ясно, что при откритии отдельного поста, я должен получить id(pk) этого поста и перебрать обьекты из PostImages на наличии связей и если они есть, - отобразить. Но я не понимаю на каком этапе как мне это сделать. Короче, мне нужно отобразить связанные с постом картинки. P.S. если я выбрал неправильную реализацию, подскажите, как мне добиться результата наиболее кошерным методом. Спасибо.
models.py
class Post(models.Model):
title = models.CharField(max_length=150, verbose_name="Заголовок")
content = models.TextField(blank=True, verbose_name="Текст статьи")
published_at = models.DateTimeField(auto_now_add=True, verbose_name="Дата публикации")
is_published = models.BooleanField(default=True, verbose_name="Опубликовано")
slug = AutoSlugField(max_length=10, db_index=True, unique=True, populate_from=instance_slug, slugify=slugify)
def __str__(self):
return u'%s' % (self.title)
def get_absolute_url(self):
return reverse('post', kwargs={"slug": self.slug})
def save(self, *args, **kwargs):
self.slug = slugify(self.title)
super(Post, self).save(*args, **kwargs)
class Meta:
verbose_name = 'Новости'
verbose_name_plural = 'Новости'
class PostImage(models.Model):
post = models.ForeignKey(Post, on_delete=models.CASCADE)
img = models.ImageField(upload_to=upload_location,
null = True,
blank = True,
validators=[validators.FileExtensionValidator(['png', 'jpg'],
message='неверное расширение файла')])
def __str__(self):
return u'%s' % (self.img)
class Meta:
verbose_name = "Изображение"
verbose_name_plural = "Изображения"
_
admin.py
class PostFileAdmin(admin.StackedInline):
model = PostFile
extra: int = 1
class PostImageAdmin(admin.StackedInline):
model = PostImage
extra: int = 1
@admin.register(Post)
class PostAdmin(admin.ModelAdmin):
list_display = ('id', 'title', 'slug', 'published_at', 'is_published',)
list_display_links = ('title',)
list_editable = ('is_published',)
list_filter = ('published_at', 'is_published',)
search_fields = ('title', 'content')
ordering = ('id',)
inlines = (PostImageAdmin, PostFileAdmin)
@admin.register(PostFile)
class PostFileAdmin(admin.ModelAdmin):
def get_model_perms(self, request): #hide-model
return {}
@admin.register(PostImage)
class PostImageAdmin(admin.ModelAdmin):
def get_model_perms(self, request): #hide-model
return {}