Databrowseを導入する

Databrowseとは

Admin siteのようにmodelから構築します。
Admin siteと違ってデータを登録することができず、見るだけのページとなります。

仕様

  1. 以下のようなmodelが存在しているとします。

    from django.db import models
    from django.contrib.auth.models import User
    from datetime
    
    class Tag(models.Model):
        tag = models.CharField(max_length = 10)
    
        def __unicode__(self):
            return self.tag
    
    class Blog(models.Model):
        title = models.CharField(max_length = 50)
        author = models.Foreignkey(User)
        content = models.TextField()
        post_date = models.DateTimeField(default = datetime.datetime.now)
        tags = models.ManyToManyField(Tags)
    
        def __unicode__(self):
            return self.title
    
  2. URLは'/databrowse/'とします。

Databrowseの導入

settings.py編集

settings.py(抜粋)

INSTALLED_APPS = (
    …
    'django.contrib.databrowse', #追加
    …
)
urls.py編集

Databrowseへの登録の仕方はAdmin siteと似ています。

urls.py(抜粋)

…
from django.contrib import databrowse #追加
from appname.models import Tag, Blog #追加

databrowse.site.register(Blog) #追加
    …
urlpatterns = patterns('',
    …
    (r'^databrowse/(.*)', databrowse.site.root),
    #(r'^(.*)', databrowse.site.root), #ルートで表示したい場合
    …
)

Databrowse表示

アクセスすると以下のように表示されます。

databrowse01

次に"Blogs"をクリックします。
デフォルトで並べ替えの機能も備わっています。

databrowse02

データ投入

Admin siteやShellモードから投入します。

再度、Databrowse表示

前回と少し違った表示になりました。
__unicode__の返り値が表示されます。

databrowse03

'firefox'をクリックします。

databrowse04

モデルの全ての値が表示されます。 'Blogs'をクリックするとデータをリスト形式で表示します。

databrowse05

Tagモデル登録

TagモデルをDatabrowseで使うために、urls.pyを修正します。

urls.py(抜粋)

…
from django.contrib import databrowse
from appname.models import Tag, Blog

databrowse.site.register(Blog)
databrowse.site.register(Tag) #追加
    …
urlpatterns = patterns('',
    …
    (r'^databrowse/(.*)', databrowse.site.root),
    #(r'^(.*)', databrowse.site.root), #ルートで表示したい場合
    …
)

Databrowseへアクセス

登録したモデルがリスト形式で表示されます。 databrowse06

前回と同様'firefox'をクリックします。
Tagモデルを登録したことにより、Tagsのデータにリンクがつきました。

databrowse07

'Apple'をクリックすると、'Apple'のデータと'Blog'モデルで使用している'Tag'データが表示されます。

databrowse08

このようにDatabrowseを導入するだけで、データを表示するページが手軽に扱えます。

twitter 2009-05-01 01:34:39.929946

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編