有没有简单的方法从CharField填充SlugField?

python django slug

16161 观看

6回复

10070 作者的声誉

class Foo(models.Model):
    title = models.CharField(max_length=20)
    slug = models.SlugField()

是否有一种内置的方法可以根据标题让slug字段自动填充?也许在管理员和管理员之外。

作者: ashchristopher 的来源 发布者: 2008 年 9 月 26 日

回应 (6)


3

11280 作者的声誉

对于1.0之前的版本:

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

应该工作得很好

对于1.0,使用camflan

作者: Nick Sergeant 发布者: 26.09.2008 07:44

61

11412 作者的声誉

决定

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

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

在你的admin.py中

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

在管理员之外,您可以slugify在视图中使用该功能。在模板中,您可以使用|slugify过滤器。

还有这个包将自动处理这个:https//pypi.python.org/pypi/django-autoslug

作者: camflan 发布者: 26.09.2008 07:51

6

9427 作者的声誉

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

作者: AdamKG 发布者: 26.09.2008 08:59

2

327 作者的声誉

您还可以使用pre_save django信号填充django管理代码之外的slug。请参阅Django信号文档

Ajax slug唯一性验证也很有用,请参阅As-You-Type Slug Uniqueness Validation @ Irrational Exuberance

作者: carefulweb 发布者: 30.09.2008 01:31

0

2282 作者的声誉

autoslug过去对我来说效果很好。虽然我从来没有尝试过使用管理员应用程序。

作者: Jon Lemmon 发布者: 19.09.2011 12:23

0

1 作者的声誉

在admin.py中

来自.models import Post

class Slugfield(admin.ModelAdmin):prepopulated_fields = {“slug”:(“title”,)}

admin.site.register(Post,ExtraField)

作者: Aayush Bhattarai 发布者: 09.03.2019 01:24
32x32