modelオブジェクトからfield名を取得する - 基本編

model作成

シンプルなmodelを作成します。

models.py

from django.db import models

class Tag(models.Model):
    name = models.CharField(max_length = 100)
    slug = models.SlugField(unique = True)

    def __unicode__(self):
        return self.name

field名取得

先ほど作成したmodelからfieldオブジェクトを取得します。

>>>from appname.models import Tag
>>>Tag._meta.fields

[<django.db.models.fields.AutoField object at 0x010BBDD0>, 
<django.db.models.fields.CharField object at 0x010BBC10>, 
<django.db.models.fields.SlugField object at 0x010BBD10>]

次にfield名を取得する。

>>>for f in Tag._meta.fields:
...     print f.attname
...
id
name
slug

fieldオブジェクトからどのような値が取得できるか確認してみます。

>>>Tag._meta.fields[1].__dict__
{'auto_created': False, 
  'serialize': True, 
  '_unique': False, 
  'unique_for_year': None, 
  'blank': False, 
  'help_text': '', 
  'unique_for_date': None, 
  'db_tablespace': '', 
  'db_index': False, 
  'unique_for_month': None, 
  'null': False, 
  'primary_key': False, 
  'max_length': 100, 
  'rel': None, 
  'verbose_name': 'name', 
  '_choices': [],
  'creation_counter': 45, 
  'editable': True, 
  'name': 'name', 
  'db_column': None, 
  'default': <class django.db.models.fields.NOT_PROVIDED at 0x00F4CAE0>, 
  'attname':'name', 
  'column': 'name'}
twitter 2009-06-05 18:51:27.390450

参照サイト

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編