mod: админка (15) для Лейблов LabelAdminForm и LabelAdmin добавлен кастомный save_model (вывод после добавления/изменения записи) и универсальная хелпер-функция. + микро-хелпер для описания связанной статьи.

This commit is contained in:
2026-06-29 21:15:16 +03:00
parent 01779a89f0
commit 08bfce2c4c
+36 -25
View File
@@ -14,9 +14,41 @@ from .utils import validate_entity_for_admin_form, generate_admin_save_message
# ============================================================================
# МИКСИНЫ ДЛЯ АДМИНКИ
# ЛОКАЛЬНЫЕ ХЕЛПЕРЫ ДЛЯ АДМИНКИ
# ============================================================================
def get_related_article_description(model_class):
"""
Генерирует HTML-описание для fieldset'а 'Связанная публикация'.
Описание объясняет роль связанной статьи и предлагает создавать её вручную.
Использует verbose_name из модели для универсальности.
Args:
model_class: Класс модели (TbLabel, TbArtist, TbMusicStyle и т.д.)
Returns:
str: HTML-описание для fieldset'а
Пример:
'description': get_related_article_description(TbLabel)
"""
# Получаем наименование модели в родительном падеже (для описания)
verbose_name = model_class._meta.verbose_name.upper()
# Получаем наименование во множественном числе (для списков альбомов)
verbose_name_plural = model_class._meta.verbose_name_plural.upper()
return (f'Прикреп&shy;ленная статья (если есть) будет отображаться на&nbsp;странице <u>{verbose_name}</u>'
f' на&nbsp;сайте. Также позволяет получать список всех альбомов <u>{verbose_name_plural}</u>,'
f' управлять SEO-атрибутами для&nbsp;улучшения видимости поисковых систем, иметь красивый'
f' slag для&nbsp;URL-странички, подсчитывать число просмотров и&nbsp;добавлений'
f' в&nbsp;избранные. <b style=\'color: green;\'>ОЧЕНЬ РЕКОМЕН&shy;ДУЕТСЯ СОЗДАВАТЬ'
f' И&nbsp;ПРИВЯЗЫВАТЬ СТАТЬЮ ВРУЧНУЮ</b>. Если публикация не&nbsp;создана вручную,'
f' то&nbsp;она будет создана автоматически (пустая) при&nbsp;сохранении <u>{verbose_name}</u>,'
f' со&nbsp;всеми SEO-атрибутами и&nbsp;slag, но&nbsp;автоматика несовершенна.<br />&nbsp;')
class RequestInFormMixin(admin.ModelAdmin):
"""
Миксин для передачи request объекта в форму.
@@ -360,14 +392,7 @@ class MusicStyleAdmin(admin.ModelAdmin):
}),
('Связанная публикация', {
'fields': ('k_style_to_article',),
'description': 'Прикреп&shy;ленная статья (если есть) будет отображаться на&nbsp;странице музыкального'
' стиля на&nbsp;сайте. Также позволяет получать список всех альбомов музыкального стиля,'
' управлять SEO-атрибутами для&nbsp;улучшения видимости поисковых систем, иметь красивый'
' slag для&nbsp;URL-странички, подсчитывать число просмотров и&nbsp;добавлений'
' в&nbsp;избранные. <b style=\'color: green;\'>ОЧЕНЬ РЕКОМЕН&shy;ДУЕТСЯ СОЗДАВАТЬ'
' И&nbsp;ПРИВЯЗЫВАТЬ СТАТЬЮ ВРУЧНУЮ</b>. Если публикация не&nbsp;создана вручную,'
' то&nbsp;она будет создана автоматически (пустая) при&nbsp;сохранении музыкального стиля,'
' со&nbsp;всеми SEO-атрибутами и&nbsp;slag, но&nbsp;автоматика несовершенна.<br />&nbsp;',
'description': get_related_article_description(TbMusicStyle),
# 'classes': ('collapse',),
}),
('Служебная информация', {
@@ -439,14 +464,7 @@ class ArtistAdmin(admin.ModelAdmin):
}),
('Связанная публикация', {
'fields': ('k_artist_to_article', ),
'description': 'Прикреп&shy;ленная статья (если есть) будет отображаться на&nbsp;странице исполнителя'
' на&nbsp;сайте. Также позволяет получать список всех альбомов исполнителя, управлять'
' SEO-атрибутами для&nbsp;улучшения видимости поисковых систем, иметь красивый'
' slag для&nbsp;URL-странички, подсчитывать число просмотров и&nbsp;добавлений'
' в&nbsp;избранные. <b style=\'color: green;\'>ОЧЕНЬ РЕКОМЕН&shy;ДУЕТСЯ СОЗДАВАТЬ'
' И&nbsp;ПРИВЯЗЫВАТЬ СТАТЬЮ ВРУЧНУЮ</b>. Если публикация не&nbsp;создана вручную,'
' то&nbsp;она будет создана автоматически (пустая) при&nbsp;сохранении исполнителя,'
' со&nbsp;всеми SEO-атрибутами и&nbsp;slag, но&nbsp;автоматика несовершенна.<br />&nbsp;',
'description': get_related_article_description(TbArtist),
# 'classes': ('collapse',),
}),
('Служебная информация', {
@@ -573,14 +591,7 @@ class LabelAdmin(RequestInFormMixin, admin.ModelAdmin):
}),
('Связанная публикация', {
'fields': ('k_label_to_article', ),
'description': 'Прикреп&shy;ленная статья (если есть) будет отображаться на&nbsp;странице лейбла'
' на&nbsp;сайте. Также позволяет получать список всех альбомов лейбла, управлять'
' SEO-атрибутами для&nbsp;улучшения видимости поисковых систем, иметь красивый'
' slag для&nbsp;URL-странички, подсчитывать число просмотров и&nbsp;добавлений'
' в&nbsp;избранные. <b style=\'color: green;\'>ОЧЕНЬ РЕКОМЕН&shy;ДУЕТСЯ СОЗДАВАТЬ'
' И&nbsp;ПРИВЯЗЫВАТЬ СТАТЬЮ ВРУЧНУЮ</b>. Если публикация не&nbsp;создана вручную,'
' то&nbsp;она будет создана автоматически (пустая) при&nbsp;сохранении лейбла,'
' со&nbsp;всеми SEO-атрибутами и&nbsp;slag, но&nbsp;автоматика несовершенна.<br />&nbsp;',
'description': get_related_article_description(TbLabel),
# 'classes': ('collapse',),
}),
('Служебная информация', {