2016-05-09 21 views
2

私は投稿のタイトルからスラッグを自動的に作成する投稿アプリを構築しています。タイトルに外国語がある場合、スラッグは生成されません。django 1.9 slugフィールドが外国語で動作しない

私はすでにここでいくつかの回答を行っていますが、それほど助けにはなりません。私は下に何かを見逃していますか?

settings.pyで下に追加
class Post(models.Model): 
    title = models.CharField(max_length=120) 
    slug = models.SlugField(unique=True, allow_unicode=True) 
    content = models.TextField() 

def create_slug(instance, new_slug=None): 
    slug = slugify(instance.title) 
    if new_slug is not None: 
     slug = new_slug 

    qs = Post.objects.filter(slug=slug).order_by("-id") 
    exists = qs.exists() 
    if exists: 
     new_slug = "%s-%s" %(slug, qs.first().id) 
     return create_slug(instance, new_slug=new_slug) 

    return slug 

def pre_save_post_receiver(sender, instance, *args, **kwargs): 
    if not instance.slug: 
     instance.slug = create_slug(instance) 

ALLOW_UNICODE_SLUGS = True 
+0

最初に質問を更新してフォーマットし、受信した正確なエラーメッセージを追加してください。また、あなたが使用しているslugifyライブラリ(Djangoに組み込まれているか、サードパーティーなのか)を知らせてください。 – e4c5

+0

@ e4c5この提案に感謝します!私はこれに従うことを確認します。 – Ankit

答えて

0

あなたはそれがあまりにも、Unicodeを許可する必要があることをslugifyを伝える必要があります。 See docs

def create_slug(instance, new_slug=None): 
    slug = slugify(instance.title, allow_unicode=True) 

また、注意してください:SlugFieldis 50 charactersのデフォルトmax_length。長いタイトルを変換すると、SlugFieldの長すぎるスラッグが発生し、例外が発生する可能性があります。

+0

SlugFieldのデフォルトのmax_lengthに関する情報とソリューションをありがとう!それは正常に動作しています。 – Ankit

+0

知っておいてよかった@Ankit、あなたは正しいとマークして、このページに載っている人々が将来それが動作することを知るようにしてください。あなたはバッジといくつかのブラウンのポイントを得る以外に:) – e4c5

関連する問題