2016-04-08 96 views
0

我想讓我的admin.py閱讀中文,但是我不知道該怎麼做。這是我的。如何從中文文本生成slug?

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) 

現在我可以用英語和塞類型將正確生成,但是當我嘗試它在中國slu is是空白的。 enter image description here enter image description here

任何人都知道該怎麼做?謝謝!

回答

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將始終是唯一的,這一點我不是在你的代碼中看到。
它將名투자解碼到該渣屑tuja

+0

對不起,,先生,,我把所有的代碼在我的admin.py ,,,它沒有工作,,我已經PIP安裝unidecode ,,或我應該把這些代碼放在哪裏?models.py?admin.py?感謝您的回覆 –

+0

@CcL我更新類應該是。你是否像這樣改變了模型ThingAdmin?你嘗試添加新記錄 - 調用了save()嗎? – Lucas03