今日97人次阅读了45/162篇文章  |    留言板  |    RSS订阅
由于性格太内向,一直做不出,抢着结账这种事毒鸡汤

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 , Python

django slug字段自动填充并查重
http://loonlog.com/2024/12/10/django-slug-cha-chong/
    觉得有用?请点击页面顶部广告支持我!

您可能感兴趣的文章

发表评论(关于评论)

评论列表,共 0 条评论

  • 暂无评论