gpt4 book ai didi

django - 如何在 Django 中自动创建 utf8 slug?

转载 作者:行者123 更新时间:2023-12-03 22:48:45 27 4
gpt4 key购买 nike

我希望 Django 自动为这个模型创建 slug:

class News(models.Model):
title = models.CharField(max_length=100)
body = models.TextField()
teaser = models.TextField('teaser', blank=True)
created=models.DateTimeField(auto_now_add=True)
pub_date=models.DateTimeField(default=datetime.datetime.now)
categories = models.ManyToManyField(Category, blank=True)
likes = models.IntegerField(default=0)
visits = models.IntegerField(default=0)
slug = models.CharField(max_length=100, unique=True)

def __unicode__(self):
return unicode(self.title)

def save(self, *args, **kwargs):
self.title = slugify_unicode(self.title)
super(News, self).save(*args, **kwargs)

我使用 CharField 而不是 slugfield 因为 Slug fields can only contain ASCII letters, numbers, dashses and underlines 但我想创建基于波斯标题的 slugs。

我的 views.py 有这个功能来创建新闻项目:
@staff_member_required
def add_news(request):
if request.method == 'POST':
form = NewsForm(request.POST)
if form.is_valid():
form.save()
return HttpResponseRedirect('/all_news')

if request.method == 'GET':
form = NewsForm()
args = {}
args.update(csrf(request))
args['form'] = form
return render_to_response('news/add_news.html', args)

当我手动创建波斯 slug 时,这很好用,但这真的很麻烦。所以我想知道是否有办法让 Django 在保存时根据标题创建 slug。

例如,当标题是:
'یک خبر مهم'

我想自动创建 'یک-خبر-مهم' 作为 slug。

最佳答案

Django 1.9 版中引入的新选项是 SlugField.allow_unicode

如果为 True,则该字段除了接受 ASCII 字母外还接受 Unicode 字母。默认为假。 doc

例如:

在 models.py 文件中,定义如下所示的 slug 列:

slug = models.SlugField(allow_unicode=True)

关于django - 如何在 Django 中自动创建 utf8 slug?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21501362/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com