2016-04-08 11 views
0

私は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) 

今私は英語でそれを入力すると、スラグが適切に生成されますが、私はしようとすると、それは中国のスラグで空白です。 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は常に一意になることを確認する必要があります。
それは

+0

など、このスラグtujaに申し訳ありません,,先生の名前투자をデコードします,,私はそれが私がピップunidecodeをインストールしている,,うまくいきませんでした,,,私のadmin.pyにすべてのそれらのコードを入れて,,か私はこれらのコードをどこに置くべきですか?models.py?admin.py ??あなたの返信ありがとう –

+0

@CcLクラスを更新する必要があります。あなたはそのようなThingAdminモデルを変更しましたか?新しいレコードを追加しようとしましたか? 'save()'が呼ばれましたか? – Lucas03

関連する問題