mod: валидатор форм, парсера и моделей (19) автоматически устанавливаем дефолтные метаданные к связанным картинкам. Переопрелен метод save для модели TbArticle и проброс него request из ArticleAdmin через переопределенный save_model...

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
2026-07-10 23:52:54 +03:00
parent 286dd8eddc
commit ee45d3a2fa
3 changed files with 88 additions and 14 deletions
+24 -5
View File
@@ -914,10 +914,6 @@ class ItemAdmin(RequestInFormMixin, admin.ModelAdmin):
readonly_fields = ('t_item_created', 't_item_updated')
# ============================================================================
# Остальные ModelAdmin классы
# ============================================================================
# ============================================================================
# АДМИНКА СТАТЕЙ
#
@@ -929,7 +925,7 @@ class ItemAdmin(RequestInFormMixin, admin.ModelAdmin):
class ArticleAdminForm(CodeMirrorFormMixin):
"""
Кастомная форма для админки статей (TbArticle).
Добавляет виджеты CodeMirror для текстовых полей
Добавляет виджеты CodeMirror для текстовых полей.
"""
class Meta:
model = TbArticle
@@ -998,7 +994,30 @@ class ArticleAdmin(admin.ModelAdmin):
}),
)
def save_model(self, request, obj, form, change):
"""
Переопределяем save_model чтобы передать username в модель.
Username используется в TbArticle.save() для установки IMG_FROM в метаданные картинки.
Args:
request: HTTP-запрос (содержит info о пользователе)
obj: инстанция TbArticle для сохранения
form: валидированная форма
change: True если редактирование, False если создание
"""
# Сохраняем username текущего пользователя
if request and request.user:
obj._admin_username = request.user.username
# Вызываем родительский save_model который вызовет obj.save()
super().save_model(request, obj, form, change)
# ============================================================================
# Остальные ModelAdmin классы
# Их еще предстоит обжужукать (натянуть CodeMirror, обвесить валидаторами, переопределить save_model и т.д.)
# ============================================================================
class OfferAdmin(admin.ModelAdmin):
"""Админ для предложений"""