41
class Foo(models.Model):
    title = models.CharField(max_length=20)
    slug = models.SlugField()

タイトルに基づいてスラッグ フィールドを自動入力する組み込みの方法はありますか? おそらく、管理者内と管理者外です。

4

6 に答える 6

71

Django 1.0以降の管理者の場合、使用する必要があります

prepopulated_fields = {'slug': ('title',), }

あなたのadmin.pyで

prepopulated_fields ディクショナリのキーは入力するフィールドであり、値は連結するフィールドのタプルです。

管理者以外ではslugify、ビューで関数を使用できます。テンプレートでは、|slugifyフィルターを使用できます。

これを自動的に処理するこのパッケージもあります: https://pypi.python.org/pypi/django-autoslug

于 2008-09-26T19:51:46.527 に答える
6

admin の外では、この django snippetを参照してください。に入れれば、.save()プログラムで作成されたオブジェクトで動作します。他の人が言ったように、管理者の中で、を使用しますprepopulated_fields

于 2008-09-26T20:59:49.017 に答える
3

1.0 より前の場合:

slug = models.SlugField(prepopulate_from=('title',))

うまくいくはずです

1.0 の場合、camflan の

于 2008-09-26T19:44:31.723 に答える
2

pre_save djangoシグナルを使用して、django管理コードの外部にスラッグを設定することもできます。Djangoシグナルのドキュメントを参照してください。

Ajaxスラッグの一意性の検証も役立ちます。As-You-Typeスラッグの一意性の検証@IrrationalExuberanceを参照してください。

于 2008-09-30T13:31:04.287 に答える
0

autoslugは、過去に私にとって非常にうまく機能しました。管理アプリで使用したことはありませんが。

于 2011-09-19T12:23:49.813 に答える