diff --git a/articles/migrations/0030_tag_slug.py b/articles/migrations/0030_tag_slug.py
new file mode 100644
index 0000000..d74517a
--- /dev/null
+++ b/articles/migrations/0030_tag_slug.py
@@ -0,0 +1,40 @@
+# Generated by Django 3.1.5 on 2021-03-04 17:17
+
+from django.db import migrations, models
+from django.utils.text import slugify
+
+
+def forwards(apps, schema_editor):
+ Tag = apps.get_model("articles", "Tag")
+ db_alias = schema_editor.connection.alias
+ tags = Tag.objects.using(db_alias).all()
+ for tag in tags:
+ tag.slug = slugify(tag.name)
+ Tag.objects.bulk_update(tags, ["slug"])
+
+
+def backwards(apps, schema_editor):
+ Tag = apps.get_model("articles", "Tag")
+ db_alias = schema_editor.connection.alias
+ Tag.objects.using(db_alias).update(slug="")
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ("articles", "0029_auto_20210303_1711"),
+ ]
+
+ operations = [
+ migrations.AddField(
+ model_name="tag",
+ name="slug",
+ field=models.CharField(blank=True, max_length=255),
+ ),
+ migrations.RunPython(forwards, backwards),
+ migrations.AlterField(
+ model_name="tag",
+ name="slug",
+ field=models.CharField(max_length=255, unique=True),
+ ),
+ ]
diff --git a/articles/models.py b/articles/models.py
index fa84a7c..99c314d 100644
--- a/articles/models.py
+++ b/articles/models.py
@@ -25,6 +25,7 @@ class User(AbstractUser):
class Tag(models.Model):
name = models.CharField(max_length=255, unique=True)
+ slug = models.CharField(max_length=255, unique=True)
class Meta:
ordering = ["name"]
diff --git a/articles/static/public.css b/articles/static/public.css
index 2f504ae..ef41fe2 100644
--- a/articles/static/public.css
+++ b/articles/static/public.css
@@ -20,7 +20,7 @@ footer > :first-child {
margin-top: 1em;
}
-nav a:not(:first-child):before {
+nav a:not(:first-child):before, a.tag:not(:first-of-type):before {
content: '\00B7';
margin: 0 5px;
color: var(--nc-tx-1);
diff --git a/articles/templates/articles/snippets/metadata.html b/articles/templates/articles/snippets/metadata.html
index 83e0239..3a27653 100644
--- a/articles/templates/articles/snippets/metadata.html
+++ b/articles/templates/articles/snippets/metadata.html
@@ -2,4 +2,7 @@
Published on {% include "articles/snippets/datetime.html" %}
· {{ article.get_read_time }} min read
{% include "articles/snippets/admin_link.html" %}
+ {% if article.tags.all %}
+
{% for tag in article.tags.all %}{{ tag.name }}{% endfor %}
+ {% endif %}