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'}