class Foo(models.Model):
title = models.CharField(max_length=20)
slug = models.SlugField()
タイトルに基づいてスラッグ フィールドを自動入力する組み込みの方法はありますか? おそらく、管理者内と管理者外です。
Django 1.0以降の管理者の場合、使用する必要があります
prepopulated_fields = {'slug': ('title',), }
あなたのadmin.pyで
prepopulated_fields ディクショナリのキーは入力するフィールドであり、値は連結するフィールドのタプルです。
管理者以外ではslugify
、ビューで関数を使用できます。テンプレートでは、|slugify
フィルターを使用できます。
これを自動的に処理するこのパッケージもあります: https://pypi.python.org/pypi/django-autoslug
admin の外では、この django snippetを参照してください。に入れれば、.save()
プログラムで作成されたオブジェクトで動作します。他の人が言ったように、管理者の中で、を使用しますprepopulated_fields
。
pre_save djangoシグナルを使用して、django管理コードの外部にスラッグを設定することもできます。Djangoシグナルのドキュメントを参照してください。
Ajaxスラッグの一意性の検証も役立ちます。As-You-Typeスラッグの一意性の検証@IrrationalExuberanceを参照してください。
autoslugは、過去に私にとって非常にうまく機能しました。管理アプリで使用したことはありませんが。