📜  django admin slug 自动填充 - Python (1)

📅  最后修改于: 2023-12-03 15:30:28.403000             🧑  作者: Mango

使用Django Admin Slug自动填充

Django Admin Slug是Django框架中一种自动填充的机制,可以根据其他字段的值自动生成Slug字段的值。Slug是URL友好的文本,通常用于标识独特的对象。

安装

Django Admin Slug是Django框架的一部分,因此不需要额外安装。只需要确保Django的版本是1.9或更高版本。

如何使用

要使用Django Admin Slug,需要在您的模型中定义一个Slug字段,并为该字段添加'unique=True'参数,以确保所有Slug值都是唯一的。

接下来,您需要创建一个用于生成Slug的函数,通常是在模型的save()方法中。该函数应该获取一个字符串作为输入,并返回一个Slug。

最后,在您的模型中,为Slug字段添加'prepopulated_fields'参数,该参数应该是一个字典,键为要自动填充的字段,值为包含Slug生成函数的字段。

以下是一个示例模型:

from django.db import models
from django.utils.text import slugify

class Product(models.Model):
    name = models.CharField(max_length=100)
    description = models.TextField()
    slug = models.SlugField(unique=True)
    
    def save(self, *args, **kwargs):
        self.slug = slugify(self.name)
        super(Product, self).save(*args, **kwargs)

    class Meta:
        verbose_name_plural = 'Products'
        verbose_name = 'Product'
        ordering = ['name']
        prepopulated_fields = {'slug': ('name',)}

在这个例子中,我们定义了一个Product模型,它有一个name字段和一个slug字段。在Product模型的save()方法中,我们使用django.utils.text.slugify()函数将name字段转换为Slug,并将其分配给slug字段。

在Product模型的Meta类中,我们为slug字段添加了'prepopulated_fields'参数,将name字段作为键,并将一个包含slug生成函数的元组作为值。这将导致每当用户在Django Admin中编辑Product对象时,slug字段都将自动填充。

注意:在使用Django Admin Slug时,需要确保Slug字段包含'unique=True'参数。

总结

使用Django Admin Slug可以使对象标识变得更加友好和易于管理。在定义模型时,您可以将任何字段用作Slug生成器,只需确保Slug字段包含'unique=True'参数,并且使用'prepopulated_fields'参数将Slug生成器字段分配给Slug字段。

注意:在使用Django Admin Slug时,需要确保Slug字段包含'unique=True'参数。