from django.db import models
import inspect
# Create your models here.

#在做Django图形化开发表的过程中,需要能够自动列出标准库、可用数据类型,可用以下方法


# 从Object的初始化函数中获取初始化参数
# int_signature = inspect.signature(models.fields.Field.__init__)
# parameters = int_signature.parameters
# parm_list = [ param for param in parameters ]
# print(parm_list)


print('next\n')




# 从models.fields.__all__获取Django Modes所有字段类型
Defined_file_list = models.fields.__all__
def _get_filed_structure(filed):
    objs = models.fields
    # attribute_name = 'Field'
    # 动态获取属性
    value = getattr(objs, filed, 'Method not found')
    # print(type(value))
    # 初始化了一个根据动态属性传进来的对象
    # 对象列表中有一些List类型,需要先处理掉
    if isinstance(value, list):
        print(value)
    else:
        obj=value()
        fields = obj.__dict__
        print(fields)

for index in range(len(Defined_file_list)):
    # print(Defined_file_list[index])
    field = Defined_file_list[index]
    _get_filed_structure(field)




# 获取所有初始化字段,包括继承自父类的字段
def get_all_attributes(obj):
    attrs = {}
    for cls in obj.__class__.__mro__:
        if '__dict__' in cls.__dict__:
            attrs.update(cls.__dict__)
        if cls == object:
            break
    return attrs


  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
  • 49.
  • 50.
  • 51.
  • 52.
  • 53.