新Admin Interface(・∀・)イイ!
現在、メール投稿を中心としたBlogを作ろうかと思ってます。
今日は、アカウントの部分を作ってみた。
本来なら、django.contrib.auth.models.Userを使って管理すればいいのですが
- ハンドルネームをユーザ名とは別の名前にしたい。
- 携帯・PCなど複数のメールアドレスから投稿したい。
などから今回はdjango.contrib.auth.models.Userを拡張します。
models.py
#-*- encoding:utf-8 -*- from django.db import models from django.contrib.auth.models import User class Nickname(models.Model): user = models.ForeignKey(User) nickname = models.CharField(max_length=10) def __unicode__(self): return self.nickname def save(self): if not self.id: super(Nickname, self).save() class Allowlist(models.Model): author = models.ForeignKey(Nickname) email = models.EmailField(unique=True) def __unicode__(self): return "%s (%s)" % (self.email, self.author) def save(self): if not self.id: super(Allowlist, self).save()
admin.py
#-*- encoding:utf-8 -*- from django.contrib import admin from accounts.models import * class Email_Inline(admin.StackedInline): model = Allowlist extra = 2 class NicknameOption(admin.ModelAdmin): ordering = ['nickname',] inlines = [Email_Inline, ] admin.site.register(Nickname, NicknameOption)
約40行くらい(設定等の部分は抜きますが)コーディングするだけで
以下のようなフォームを自動生成します!
以前のAdmin Interfaceではやる気は起きなかったな。うーん便利 ;-)
admininterface posted by (C)常山
もっとdjango-registrationやdjango-profilesなども参考にしてみよう :-)