Fix tag issues

This commit is contained in:
2025-02-21 21:34:26 +11:00
parent a1f732ee27
commit 076f63bf8a
4 changed files with 45 additions and 2 deletions
BIN
View File
Binary file not shown.
@@ -0,0 +1,36 @@
from django.db import migrations, models
from django.utils.text import slugify
from django.utils.translation import gettext_lazy as _
def populate_tag_slugs(apps, schema_editor):
Tag = apps.get_model('links', 'Tag')
for tag in Tag.objects.all():
tag.slug = slugify(tag.name)
tag.save()
class Migration(migrations.Migration):
dependencies = [
('links', '0032_remove_post_type'),
]
operations = [
migrations.AddField(
model_name='tag',
name='slug',
field=models.SlugField(max_length=100, null=True, unique=True, verbose_name=_('Slug')),
),
migrations.AddField(
model_name='tag',
name='description',
field=models.TextField(blank=True, verbose_name=_('Description')),
),
migrations.RunPython(populate_tag_slugs, reverse_code=migrations.RunPython.noop),
migrations.AlterField(
model_name='tag',
name='slug',
field=models.SlugField(max_length=100, unique=True, verbose_name=_('Slug')),
),
]
+8 -1
View File
@@ -144,6 +144,8 @@ def generate_random_color():
class Tag(models.Model):
name = models.CharField(_('Name'), max_length=50, unique=True)
slug = models.SlugField(_('Slug'), max_length=100, unique=True)
description = models.TextField(_('Description'), blank=True)
created_at = models.DateTimeField(_('Created at'), auto_now_add=True)
updated_at = models.DateTimeField(_('Updated at'), auto_now=True)
@@ -156,7 +158,12 @@ class Tag(models.Model):
return self.name
def get_absolute_url(self):
return reverse('tag-detail', kwargs={'pk': self.pk})
return reverse('tag-detail', kwargs={'slug': self.slug})
def save(self, *args, **kwargs):
if not self.slug:
self.slug = slugify(self.name)
super().save(*args, **kwargs)
class Page(models.Model):
class ProcessStatus(models.TextChoices):
+1 -1
View File
@@ -26,7 +26,7 @@
{% endwith %}
</div>
</div>
</a>
<!-- </a> -->
{% empty %}
<div class="col-span-full text-center py-8 text-gray-500">
{% trans "No tags found." %}