你可以得到一個模型的領域和它們的元數據是這樣的:
def get_model_metadata(model_class, meta_whitelist=[]):
field_list = model_class._meta.fields
return_data = {}
for field in field_list:
field_name = field.name
field_meta = field.__dict__
return_meta = {}
for 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
用法:
from django.contrib.auth.models import User
get_model_metadata(User, meta_whitelist=['max_length'])
返回:
{
'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}
}
改進這種方法將包括黑名單字段元數據,白名單/黑名單字段,也可能是一個不顯示具有None值的元數據的布爾值。
您可以使用[django-angular](https://github.com/jrief/django-angular)構建您的表格 –