Admin siteのlist_editableを使う

新機能を使う

list_editableもDjango1.1で追加された機能です。

modelとadminの作成

mode,s.py

from django.contrib.auth.models import User
from django.db import models

class Blog(models.Model):
    title = models.CharField(max_length = 50)
    author = models.ForeignKey(User)
    content = models.TextField()
    post_date = models.DateTimeField()

    def __unicode__(self):
        return self.title

admin.py

from django.contrib import admin
from appname.models import Blog

class BlogAdmin(admin.ModelAdmin):
    list_display = ('title', 'author', 'post_date')

設定する前に注意

list_editableを使用するには少しだけ注意する必要があります。

  1. まずlist_displayに登録されていること。
  2. さらにlist_display_linksとかぶっていないこと。

上記を満たしたfieldが対象になります。

適応前のAdmin site

list_editable適応前のAdmin site

list_editable01

admin.pyの編集

ForeignKeyの'author'とDateTimeFieldの'post_date'をlist_editableに追加します。

admin.py

from django.contrib import admin
from appname.models import Blog

class BlogAdmin(admin.ModelAdmin):
    list_display = ('title', 'author', 'post_date')
    list_editable = ['author', 'post_date']

適用後のAdmin site

ForeignKeyのfieldがChange listで修正できるのは便利ですね。
積極的に使っていきたい機能ですね。

list_editable02

twitter 2009-08-09 00:50:32.906520

Recent Updates

URLConf Tip 01 - キャプチャの有無にかかわらず同一のviewで処理する
Markdownの入力補助"wmd"をAdmin siteで使う
ModelFormでfieldのwidgetを変更する
動的なformを作る 6 - Dynamic Inline Admin site編
Formsetsを使う3 - inlineformset_factory編
動的なformを作る 5 - django-dynamic-formset編
Formクラスからメディアを定義する
複数のmodelを結合する 2 - Proxy model編
複数のmodelを結合する 1
ModelFormでfieldの表示順番を変える
Admin siteのwidgetを個別に変更する
formfield_overridesを使ってAdmin siteのwidgetを変更する
Admin siteのlist_displayをカスタマイズする - リンク編
Admin siteのlist_displayをカスタマイズする - 基本編
Admin siteのTextareaの高さを自在に変更する - admin.py編