add: поле updated_at (Дата обновления) в модели +миграции, админке, блогах, страницах и sitemaps.xml
This commit is contained in:
@@ -1,17 +1,20 @@
|
|||||||
from django.contrib import admin
|
from django.contrib import admin
|
||||||
|
from django.utils.html import format_html
|
||||||
|
import html
|
||||||
from .models import Post
|
from .models import Post
|
||||||
|
|
||||||
@admin.register(Post)
|
@admin.register(Post)
|
||||||
class PostAdmin(admin.ModelAdmin):
|
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')
|
list_filter = ('post_type', 'is_published', 'published_at')
|
||||||
search_fields = ('title', 'content', 'slug')
|
search_fields = ('title', 'content', 'slug')
|
||||||
prepopulated_fields = {'slug': ('title',)}
|
prepopulated_fields = {'slug': ('title',)}
|
||||||
date_hierarchy = 'published_at'
|
date_hierarchy = 'published_at'
|
||||||
|
readonly_fields = ('updated_at',)
|
||||||
|
|
||||||
fieldsets = (
|
fieldsets = (
|
||||||
(None, {
|
(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')
|
'fields': ('image', 'excerpt', 'content')
|
||||||
@@ -21,3 +24,8 @@ class PostAdmin(admin.ModelAdmin):
|
|||||||
'classes': ('collapse',)
|
'classes': ('collapse',)
|
||||||
}),
|
}),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@admin.display(description='Заголовок', ordering='title')
|
||||||
|
def clean_title(self, obj):
|
||||||
|
"""Отображает заголовок без HTML-сущностей ( -> пробел)."""
|
||||||
|
return html.unescape(obj.title)
|
||||||
|
|||||||
18
etpgrf_site/blog/migrations/0004_post_updated_at.py
Normal file
18
etpgrf_site/blog/migrations/0004_post_updated_at.py
Normal 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='Дата обновления'),
|
||||||
|
),
|
||||||
|
]
|
||||||
@@ -43,6 +43,11 @@ class Post(models.Model):
|
|||||||
db_index=True,
|
db_index=True,
|
||||||
help_text="Дата, которая будет отображаться в блоге. Можно запланировать на будущее."
|
help_text="Дата, которая будет отображаться в блоге. Можно запланировать на будущее."
|
||||||
)
|
)
|
||||||
|
updated_at = models.DateTimeField(
|
||||||
|
"Дата обновления",
|
||||||
|
auto_now=True,
|
||||||
|
help_text="Автоматически обновляется при каждом сохранении."
|
||||||
|
)
|
||||||
|
|
||||||
content = models.TextField(
|
content = models.TextField(
|
||||||
verbose_name="Контент",
|
verbose_name="Контент",
|
||||||
|
|||||||
@@ -11,4 +11,4 @@ class PostSitemap(Sitemap):
|
|||||||
|
|
||||||
def lastmod(self, obj):
|
def lastmod(self, obj):
|
||||||
"""Возвращает дату последнего изменения."""
|
"""Возвращает дату последнего изменения."""
|
||||||
return obj.published_at # Или можно добавить поле updated_at
|
return obj.updated_at # Используем дату обновления, а не публикации
|
||||||
|
|||||||
@@ -23,7 +23,7 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"datePublished": "{{ page.published_at|date:'Y-m-d' }}",
|
"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 %}
|
</script>{% endblock %}
|
||||||
|
|
||||||
|
|||||||
@@ -27,7 +27,7 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"datePublished": "{{ post.published_at|date:'Y-m-d' }}",
|
"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 %}
|
</script>{% endblock %}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user