我有数据表。是否可以在现有表格上自动生成slug字段?还是有其他选择吗?谢谢 这是我的表
答案 0 :(得分:17)
使用slugify
模板过滤器,您可以编写脚本,或循环遍历shell中的对象。
>>> from django.template.defaultfilters import slugify
>>> for obj in MyModel.objects.all():
... obj.slug = slugify(obj.title)
... obj.save()
答案 1 :(得分:4)
我有一个便利模型,我在所有项目中使用这些东西。我认为这是如何做你想做的一个很好的例子。
from django.template.defaultfilters import slugify
class NameAndSlug(models.Model):
'''
convenience model for things that are just names
'''
name = models.CharField(max_length=200, unique=True)
slug = models.SlugField()
def __unicode__(self):
return self.name
def save(self, *args, **kwargs):
"""
Slugify name if it doesn't exist. IMPORTANT: doesn't check to see
if slug is a dupe!
"""
if not self.slug:
self.slug = slugify(self.name)
super(NameAndSlug, self).save(*args, **kwargs)
class Meta:
abstract = True
答案 2 :(得分:3)
您可以在MySQL中执行此操作(将表的名称替换为“tableName”):
UPDATE `tableName` SET `slug`=LOWER(REPLACE( `title` , ' ' , '-' ));
这会将“This Is A Title”等标题更改为“this-is-a-title”等标题。
编辑要处理括号并删除双空格,请使用:
UPDATE `tableName` SET `slug`=LOWER( REPLACE( REPLACE( REPLACE( REPLACE( `title` , '(' , '' ) , ')' , '' ) , ' ' , ' ' ) , ' ' , '-' ) );