django slug字段自动填充并查重
2024-12-10     loonlog     125     0
本文目录
在Django中,可以通过信号(signals)来实现slug的自动填充并进行查重。以下是一个简单的实现示例:
首先,定义一个信号处理函数来自动填充slug,并在其中添加查重逻辑:
from django.db.models.signals import pre_save from django.dispatch import receiver from django.template.defaultfilters import slugify from django.db import models class MyModel(models.Model): title = models.CharField(max_length=200) slug = models.SlugField(unique=True, blank=True) @receiver(pre_save, sender=MyModel) def mymodel_pre_save(sender, **kwargs): instance = kwargs['instance'] if not instance.slug: # 生成slug instance.slug = slugify(instance.title) # 查重逻辑 while MyModel.objects.filter(slug=instance.slug).exists(): # 如果slug重复,增加一个随机数后缀 instance.slug = f"{slugify(instance.title)}-{random.randint(1, 1000)}"
在这个例子中,每次保存MyModel实例之前,如果它没有slug字段的值,那么就会自动使用title字段的内容生成一个slug,并进行查重。如果生成的slug与数据库中已有的slug重复,则通过添加一个随机数后缀来避免冲突。这里使用了Django的slugify过滤器来生成slug,并通过Django的信号系统pre_save来在保存前执行这个函数。
django slug字段自动填充并查重
http://loonlog.com/2024/12/10/django-slug-cha-chong/
http://loonlog.com/2024/12/10/django-slug-cha-chong/
评论列表,共 0 条评论
暂无评论