前两天做项目用到了slug,每次添加国家标签的时候,都要用不重复的数字或者字母,感觉特别麻烦。
其实无论是数字还是字母,只要是不重复就好。
网上有的说是中文翻译成英文、数字用随机函数生成等待(个人感觉不太好使。。)
不知道你们是否留意:当用Django存数据库的时候,id是不会重复的!!
直接将id和slug绑死就好了
解决方案:
先存将数据存入数据库,产生id后,在提取id更新slug(绑死这块,希望有人能给更好的解决方案)
#先插入数据
new_country = Country()
new_country.name = '美国'
new_country.slug = 'example' #slug暂时用example
new_country.save()
#其次更新数据
oldcountry = Country.objects.get(name='美国')
oldcountry.slug = oldcountry.id #slug==id
oldcountry.save()
后续更新了..
新的解决方法就是 在Class Admin里面继承一个save_model函数
@admin.register(Content)
class ContentAdmin(admin.ModelAdmin):
list_display = ('name', 'slug', 'content')
# 不手动填写slug
exclude = ['slug', ]
def save_model(self, request, obj, form, change):
obj.slug = obj.id
super().save_model(request, obj, form, change)