add: поле updated_at (Дата обновления) в модели +миграции, админке, блогах, страницах и sitemaps.xml

This commit is contained in:
2026-02-11 16:26:09 +03:00
parent e9868c3413
commit 1573265667
6 changed files with 36 additions and 5 deletions

View File

@@ -1,17 +1,20 @@
from django.contrib import admin
from django.utils.html import format_html
import html
from .models import Post
@admin.register(Post)
class PostAdmin(admin.ModelAdmin):
list_display = ('title', 'post_type', 'is_published', 'published_at')
list_display = ('clean_title', 'post_type', 'is_published', 'published_at', 'updated_at')
list_filter = ('post_type', 'is_published', 'published_at')
search_fields = ('title', 'content', 'slug')
prepopulated_fields = {'slug': ('title',)}
date_hierarchy = 'published_at'
readonly_fields = ('updated_at',)
fieldsets = (
(None, {
'fields': ('title', 'slug', 'post_type', 'is_published', 'published_at')
'fields': ('title', 'slug', 'post_type', 'is_published', 'published_at', 'updated_at')
}),
('Контент', {
'fields': ('image', 'excerpt', 'content')
@@ -21,3 +24,8 @@ class PostAdmin(admin.ModelAdmin):
'classes': ('collapse',)
}),
)
@admin.display(description='Заголовок', ordering='title')
def clean_title(self, obj):
"""Отображает заголовок без HTML-сущностей (  -> пробел)."""
return html.unescape(obj.title)

View File

@@ -0,0 +1,18 @@
# Generated by Django 6.0.1 on 2026-02-11 11:35
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('blog', '0003_alter_post_excerpt'),
]
operations = [
migrations.AddField(
model_name='post',
name='updated_at',
field=models.DateTimeField(auto_now=True, help_text='Автоматически обновляется при каждом сохранении.', verbose_name='Дата обновления'),
),
]

View File

@@ -43,6 +43,11 @@ class Post(models.Model):
db_index=True,
help_text="Дата, которая будет отображаться в блоге. Можно запланировать на будущее."
)
updated_at = models.DateTimeField(
"Дата обновления",
auto_now=True,
help_text="Автоматически обновляется при каждом сохранении."
)
content = models.TextField(
verbose_name="Контент",

View File

@@ -11,4 +11,4 @@ class PostSitemap(Sitemap):
def lastmod(self, obj):
"""Возвращает дату последнего изменения."""
return obj.published_at # Или можно добавить поле updated_at
return obj.updated_at # Используем дату обновления, а не публикации

View File

@@ -23,7 +23,7 @@
}
},
"datePublished": "{{ page.published_at|date:'Y-m-d' }}",
"dateModified": "{{ page.published_at|date:'Y-m-d' }}"
"dateModified": "{{ page.updated_at|date:'Y-m-d' }}"
}
</script>{% endblock %}

View File

@@ -27,7 +27,7 @@
}
},
"datePublished": "{{ post.published_at|date:'Y-m-d' }}",
"dateModified": "{{ post.published_at|date:'Y-m-d' }}"
"dateModified": "{{ post.updated_at|date:'Y-m-d' }}"
}
</script>{% endblock %}