django slug字段自动填充并查重
2024-12-10     loonlog     4832     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 条评论
暂无评论