有没有一种简单的方法可以从CharField填充SlugField?

时间:2020-03-06 14:48:12  来源:igfitidea点击:
class Foo(models.Model):
    title = models.CharField(max_length=20)
    slug = models.SlugField()

是否有内置的方法来根据标题自动填充子弹字段?也许在管理员内和管理员外。

解决方案

对于1.0之前的版本:

slug = models.SlugField(prepopulate_from=('title',))

应该很好

对于1.0,请使用camflan的

对于Django 1.0及更高版本中的Admin,我们需要使用

prepopulated_fields = {'slug': ('title',), }

在admin.py中

我们在prepopulated_fields词典中的键是要填充的字段,值是要连接的字段的元组。

在admin之外,我们可以在视图中使用slugify函数。在模板中,我们可以使用| slugify过滤器。

还有一个软件包可以自动处理此问题:https://pypi.python.org/pypi/django-autoslug

在管理员之外,请参阅此django代码段。将其放在.save()中,它将与以编程方式创建的对象一起使用。正如其他人所说,在管理员内部使用prepopulated_fields

我们还可以使用pre_save django信号在django管理代码之外填充子弹。
请参阅Django信号说明文件。

Ajax子弹唯一性验证也将很有用,请参阅按需输入类型的子弹唯一性验证@非理性繁荣