Generar un slug automaticamente¶
Con django
# myapp/models.py
from django.db import models
from django.template.defaultfilters import slugify
from django.urls import reverse
class Noticia(models.Model):
titulo = models.CharField(max_length=200)
slug = models.CharField(max_length=200, blank=True)
def save(self, *args, **kwargs):
self.slug = slugify(self.titulo)
super(Noticia, self).save(*args, **kwargs)
Manualmente
# myapp/models.py
import re
from django.db import models
from django.urls import reverse
class Noticia(models.Model):
titulo = models.CharField(max_length=200)
slug = models.CharField(max_length=200, blank=True)
def save(self, *args, **kwargs):
self.slug = re.sub(r'[^a-z0-9+]', '-', self.titulo.lower())
super(Noticia, self).save(*args, **kwargs)
# myapp/admin.py
from django.contrib import admin
from .models import Noticia
class NoticiaAdmin(admin.ModelAdmin):
prepopulated_fields = {'slug': ('titulo',)}
admin.site.register(Noticia, NoticiaAdmin)