Newforms-admin初級編

RFC: Django 1.0 roadmap and timelineから盛り上がってきたDjangoですが、これを機に少し触ってみる。


インストールは、newforms-adminのSVNやソースから取得して、あとは安定版や開発版と同じ方法なので省略。


次に、環境構築。(適宜自分の方法に置き換えてください)

  • django-admin.py startproject XXX
  • manage.py startapp YYY
  • settings.py編集
    • INSTALLED_APPに"django.contrib.admin"とついでに"YYY"を追加

までは、かわりありませんが次から少し変わってきます。
生成されるurls.pyの内容が少し変わっています。
安定版・開発版は

from django.conf.urls.defaults import *

urlpatterns = patterns('',
    # Example:
    # (r'^tsic/', include('tsic.foo.urls')),

    # Uncomment this for admin:
    # (r'^admin/', include('django.contrib.admin.urls')),

でしたが、newforms-adminでは

from django.conf.urls.defaults import *

# Uncomment this for admin:
#from django.contrib import admin

urlpatterns = patterns('',
    # Example:
    # (r'^newforms/', include('newforms.foo.urls')),

    # Uncomment this for admin docs:
    #(r'^admin/doc/', include('django.contrib.admindocs.urls')),

    # Uncomment this for admin:
    #('^admin/(.*)', admin.site.root),
)

のように少し増えてますが、大丈夫です。
4行目と14行目を以下のようにコメントアウトするだけです。

from django.conf.urls.defaults import *

# Uncomment this for admin:
from django.contrib import admin

urlpatterns = patterns('',
    # Example:
    # (r'^newforms/', include('newforms.foo.urls')),

    # Uncomment this for admin docs:
    #(r'^admin/doc/', include('django.contrib.admindocs.urls')),

    # Uncomment this for admin:
    ('^admin/(.*)', admin.site.root),
)

urls.pyの修正はこれだけです。
次にmodels.pyを作成します。

from django.db import models

# Create your models here.

class Address(models.Model):
	short_name = models.CharField(max_length=20)
	long_name = models.CharField(max_length=80)
	addr_line_1 = models.CharField(max_length=80, blank=True)
	addr_line_2 = models.CharField(max_length=80, blank=True)
	city = models.CharField(max_length=50)
	state = models.USStateField()
	zip = models.CharField(max_length=10, blank=True)
	
	def __uicode__(self):
		return self.short_name

までは共通です。
つぎに
安定版・開発版でAddress定義をadminに表示させる一番の簡単な方法は上記の定義の下に

	class Admin:
		pass

でしたが、newforms-adminでは少し違います。

from django.contrib import admin

admin.site.register(Address)

のようになります。
ちょっとtemplatetagsチックですね。


次回は(いつ?)もう少し進めていきたいと思います。
先に進みたい方は、The Power of Django Admin (Even For Non-Django Projects)をご覧下さい。