python - How can i extract metdata from django models -


suppose have model in django

class person(models.model):     first_name = models.charfield(max_length=30)     last_name = models.charfield(max_length=30) 

now want create serializer in rest metadata models.

like resulting json should contain

 //rough example     {     first_name: {max_length: 30},     last_name: {max_length:30}     } 

my aim meta data on fly , create forms dynamically using angularjs schema forms

any idea on how can read meta data models

you can model's fields , metadata this:

def get_model_metadata(model_class, meta_whitelist=[]):   field_list = model_class._meta.fields   return_data = {}   field in field_list:     field_name = field.name     field_meta = field.__dict__     return_meta = {}     meta_name in field_meta:       if meta_name in meta_whitelist:         return_meta[meta_name] = field_meta[meta_name]     if len(return_meta) > 0:       return_data[field_name] = return_meta   return return_data 

usage:

from django.contrib.auth.models import user get_model_metadata(user, meta_whitelist=['max_length']) 

returns:

{   'username': {'max_length': 30},   'first_name': {'max_length': 30},   'last_name': {'max_length': 30},   'is_active': {'max_length': none},   'email': {'max_length': 75},   'is_superuser': {'max_length': none},   'is_staff': {'max_length': none},   'last_login': {'max_length': none},   'password': {'max_length': 128},   u'id': {'max_length': none},   'date_joined': {'max_length': none} } 

improvements method include blacklist of field metadata, whitelist/blacklist fields, , maybe boolean not showing metadata has none value.