我想让我的admin.py读中文,但我不知道怎么办。这就是我所拥有的。
admin.py
from django.contrib import admin
from collection.models import Thing
class ThingAdmin(admin.ModelAdmin):
model = Thing
list_display = ('name', 'description',)
prepopulated_fields = {'slug': ('name',)}
admin.site.register(Thing, ThingAdmin)
models.py
from django.db import models
class Thing(models.Model):
name = models.CharField(max_length=255)
description = models.TextField()
slug = models.SlugField(unique=True)
现在我可以用英文键入它并且slug会正确生成,但是当我在中文中尝试时,slug是空白的。
任何人都知道怎么做?谢谢!
答案 0 :(得分:0)
我刚才有类似的问题。您需要将中文转换为可以存储在SlugField
中的文本
包括unidecode
和可选的slugify
:
from unidecode import unidecode
from django.template.defaultfilters import slugify
并覆盖保存为以下内容:
class ThingAdmin(admin.ModelAdmin):
model = Thing
list_display = ('name', 'description',)
prepopulated_fields = {'slug': ('name',)}
def save(self, *args, **kwargs):
self.slug = slugify(unidecode(self.name))
return super(ThingAdmin, self).save(*args, **kwargs)
您还需要确保slug
始终是唯一的,我在您的代码中没有看到
它会将名称투자
解码为此slug tuja
等。