# models.py
class Images(models.Model):
img = models.ImageField(upload_to='photolog', verbose_name='Изображение')
class Meta:
verbose_name = 'Изображение'
verbose_name_plural = 'Изображения'
def thumb(self):
if self.img:
path = self.img.url
return format_html('<img src="{}" height="60">'.format(path))
else:
return '(ПУСТО)'
class PhotoObject(models.Model):
'Фотообъект - объект, у которого больше одной фотографии'
imgs = models.ForeignKey(Images, blank=True, null=True, verbose_name='Картинки', on_delete=models.CASCADE)
title = models.CharField(max_length=200, verbose_name='Заголовок')
slug = models.SlugField(max_length=200, verbose_name='url статьи')
description = models.CharField(max_length=512, blank=True, null=True, verbose_name='Краткое описание')
keywords = models.CharField(max_length=255, blank=True, null=True, verbose_name='Ключевые слова')
class Meta:
verbose_name = 'Фотообъект'
verbose_name_plural = 'Фотообъекты'
def __str__(self):
return self.title
# admin.py
class ImagesAdmin(admin.TabularInline):
model = Images
extra = 1
fields = ( 'img', 'thumb', )
readonly_fields = ('thumb',)
@admin.register(PhotoObject)
class PhotoObjectAdmin(admin.ModelAdmin):
list_display = ('title', 'slug')
fieldsets = [
(None,
{'fields': (('title', 'slug'), 'keywords', 'description')}),
]
prepopulated_fields = {'slug': ('title',)}
inlines = [ImagesAdmin]