Django拾遗之1
Django通过表,取到表所以在的APP的名字
F:python从入门到放弃实战11.22PerfectCRM>python manage.py shell Python 3.6.4 (v3.6.4:d48eceb, Dec 19 2017, 06:54:40) [MSC v.1900 64 bit (AMD64)] on win32 Type "help", "copyright", "credits" or "license" for more information. (InteractiveConsole) >>> from crm import models >>> models.UserProfile <class 'crm.models.UserProfile'> >>> models.UserProfile._meta <Options for UserProfile> >>> dir(models.UserProfile._meta) ['FORWARD_PROPERTIES', 'REVERSE_PROPERTIES', '__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_ subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', '_expire_cache', '_forward_fields_map', '_get_fields', '_get_fields_cache', '_ordering_clash', '_populate_directed_relation_graph', '_prepare', '_property_names', '_relation_tree', 'abstract', 'add_field', 'add_manager', 'app_config', 'app_label', 'apps', 'auto_created', 'auto_field', 'base_manager', 'base_manager_name', 'can_migrate', 'concrete_fields', 'concrete_model', 'contribute_to_class', 'db_table', 'db_tablespac e', 'default_apps', 'default_manager', 'default_manager_name', 'default_permissions', 'default_related_name', 'fields', 'fields_map', 'get_ancestor_link', 'get_base_chain', 'get_field', 'get_fields', 'ge t_latest_by', 'get_parent_list', 'get_path_from_parent', 'get_path_to_parent', 'index_together', 'indexes', 'installed', 'label', 'label_lower', 'local_concrete_fields', 'local_fields', 'local_managers', 'local_many_to_many', 'managed', 'managers', 'managers_map', 'many_to_many', 'model', 'model_name', 'object_name', 'order_with_respect_to', 'ordering', 'original_attrs', 'parents', 'permissions', 'pk', 'private_fields', 'proxy', 'proxy_for_model', 'related_fkey_lookups', 'related_objects', 'required_db_features', 'required_db_vendor', 'select_on_save', 'setup_pk', 'setup_proxy', 'swappable', 'swapped', 'unique_together', 'verbose_name', 'verbose_name_plural', 'verbose_name_raw'] >>> models.UserProfile._meta.app_config <CrmConfig: crm> >>> models.UserProfile._meta.label 'crm.UserProfile' >>> models.UserProfile._meta.app_label 'crm' >>>
Microsoft Windows [版本 6.1.7601] 版权所有 (c) 2009 Microsoft Corporation。保留所有权利。 F:python从入门到放弃实战11.22PerfectCRM>dir 驱动器 F 中的卷没有标签。 卷的序列号是 0007-4A5F F:python从入门到放弃实战11.22PerfectCRM 的目录 2018/12/04 13:51 <DIR> . 2018/12/04 13:51 <DIR> .. 2018/12/05 09:44 <DIR> .idea 2018/12/04 13:48 <DIR> crm 2018/12/04 17:17 <DIR> king_admin 2018/11/22 15:44 557 manage.py 2018/12/04 14:18 <DIR> PerfectCRM 2018/11/23 14:29 <DIR> statics 2018/11/23 16:53 <DIR> student 2018/12/04 14:17 <DIR> templates 1 个文件 557 字节 9 个目录 267,912,523,776 可用字节 F:python从入门到放弃实战11.22PerfectCRM>python manage.py shell Python 3.6.4 (v3.6.4:d48eceb, Dec 19 2017, 06:54:40) [MSC v.1900 64 bit (AMD64)] on win32 Type "help", "copyright", "credits" or "license" for more information. (InteractiveConsole) >>> from crm import shell Traceback (most recent call last): File "<console>", line 1, in <module> ImportError: cannot import name 'shell' >>> from crm import models >>> models.UserProfile._meta.app_label 'crm' >>> models.UserProfile._meta.verbose_name_plural 'user profiles' >>> models.Customer._meta.verbose_name_plural '客户表' >>> models.Customer._meta.verbose_name '客户表' >>> >>> >>> >>> >>> dir(importlib) Traceback (most recent call last): File "<console>", line 1, in <module> NameError: name 'importlib' is not defined >>> import importlib >>> dir(importlib) ['_RELOADING', '__all__', '__builtins__', '__cached__', '__doc__', '__file__', '__import__', '__loader__', '__name__', '__package__', '__path__', '__spec__', '_ bootstrap', '_bootstrap_external', '_imp', '_r_long', '_w_long', 'abc', 'find_loader', 'import_module', 'invalidate_caches', 'machinery', 'reload', 'sys', 'type s', 'util', 'warnings'] >>> >>> importlib.import_module('crm') <module 'crm' from 'F:\python从入门到放弃\实战\11.22\PerfectCRM\crm\__init__.py'> >>> importlib.import_module('crm.models') <module 'crm.models' from 'F:\python从入门到放弃\实战\11.22\PerfectCRM\crm\models.py'> >>> m=importlib.import_module('crm.models') >>> m <module 'crm.models' from 'F:\python从入门到放弃\实战\11.22\PerfectCRM\crm\models.py'> >>> m.UserProfile <class 'crm.models.UserProfile'> >>> dir(m) ['Branch', 'ClassList', 'Course', 'CourseRecord', 'Customer', 'CustomerFollowUp', 'Enrollment', 'Menu', 'Payment', 'Role', 'StudyRecord', 'Tag', 'User', 'UserPr ofile', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'models'] >>> dir(m.models) ['Aggregate', 'AutoField', 'Avg', 'BLANK_CHOICE_DASH', 'BigAutoField', 'BigIntegerField', 'BinaryField', 'BooleanField', 'CASCADE', 'Case', 'CharField', 'CommaS eparatedIntegerField', 'Count', 'DEFERRED', 'DO_NOTHING', 'DateField', 'DateTimeField', 'DecimalField', 'DurationField', 'EmailField', 'Empty', 'Exists', 'Expre ssion', 'ExpressionList', 'ExpressionWrapper', 'F', 'Field', 'FieldDoesNotExist', 'FileField', 'FilePathField', 'FilteredRelation', 'FloatField', 'ForeignKey', 'ForeignObject', 'Func', 'GenericIPAddressField', 'IPAddressField', 'ImageField', 'Index', 'IntegerField', 'Lookup', 'Manager', 'ManyToManyField', 'ManyToManyRe l', 'ManyToOneRel', 'Max', 'Min', 'Model', 'NOT_PROVIDED', 'NullBooleanField', 'ObjectDoesNotExist', 'OneToOneField', 'OneToOneRel', 'OrderWrt', 'OuterRef', 'PR OTECT', 'PositiveIntegerField', 'PositiveSmallIntegerField', 'Prefetch', 'ProtectedError', 'Q', 'QuerySet', 'RowRange', 'SET', 'SET_DEFAULT', 'SET_NULL', 'SlugF ield', 'SmallIntegerField', 'StdDev', 'Subquery', 'Sum', 'TextField', 'TimeField', 'Transform', 'URLField', 'UUIDField', 'Value', 'ValueRange', 'Variance', 'Whe n', 'Window', 'WindowFrame', '__all__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__path__', '__spec__', 'a ggregates', 'aggregates_all', 'base', 'constants', 'deletion', 'expressions', 'fields', 'fields_all', 'functions', 'indexes', 'indexes_all', 'lookups', 'manager ', 'options', 'prefetch_related_objects', 'query', 'query_utils', 'signals', 'sql', 'utils'] >>> m <module 'crm.models' from 'F:\python从入门到放弃\实战\11.22\PerfectCRM\crm\models.py'> >>> m.Customer.objects.all()[1] <Customer: qrqewrqe> >>> m.Customer.objects.all()[0] <Customer: 12313123> >>> m.Customer.objects.all()[0].qq '12313123' >>> c=m.Customer.objects.all()[1] >>> c <Customer: qrqewrqe> >>> c.source 2 >>> c._meta.fields (<django.db.models.fields.AutoField: id>, <django.db.models.fields.CharField: name>, <django.db.models.fields.CharField: qq>, <django.db.models.fields.CharField : qqname>, <django.db.models.fields.CharField: phone>, <django.db.models.fields.SmallIntegerField: source>, <django.db.models.fields.CharField: referral_from>, <django.db.models.fields.related.ForeignKey: consult_course>, <django.db.models.fields.TextField: content>, <django.db.models.fields.related.ForeignKey: consult ant>, <django.db.models.fields.TextField: memo>, <django.db.models.fields.CharField: status>, <django.db.models.fields.DateTimeField: date>) >>> c._meta.get_field('source') <django.db.models.fields.SmallIntegerField: source> >>> s1=c._meta.get_field('source') >>> dir(s1) ['__class__', '__copy__', '__deepcopy__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__ha sh__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__size of__', '__str__', '__subclasshook__', '__weakref__', '_check_backend_specific_checks', '_check_choices', '_check_db_index', '_check_deprecation_details', '_chec k_field_name', '_check_max_length_warning', '_check_null_allowed_for_primary_keys', '_check_validators', '_clear_cached_lookups', '_db_tablespace', '_descriptio n', '_error_messages', '_get_default', '_get_flatchoices', '_get_lookup', '_unique', '_unregister_lookup', '_validators', '_verbose_name', 'attname', 'auto_crea ted', 'auto_creation_counter', 'blank', 'cached_col', 'cast_db_type', 'check', 'choices', 'class_lookups', 'clean', 'clone', 'column', 'concrete', 'contribute_t o_class', 'creation_counter', 'db_check', 'db_column', 'db_index', 'db_parameters', 'db_tablespace', 'db_type', 'db_type_parameters', 'db_type_suffix', 'deconst ruct', 'default', 'default_error_messages', 'default_validators', 'description', 'editable', 'empty_strings_allowed', 'empty_values', 'error_messages', 'flatcho ices', 'formfield', 'get_attname', 'get_attname_column', 'get_choices', 'get_col', 'get_db_converters', 'get_db_prep_save', 'get_db_prep_value', 'get_default', 'get_filter_kwargs_for_object', 'get_internal_type', 'get_lookup', 'get_lookups', 'get_pk_value_on_save', 'get_prep_value', 'get_transform', 'has_default', 'hel p_text', 'hidden', 'is_relation', 'many_to_many', 'many_to_one', 'max_length', 'merge_dicts', 'model', 'name', 'null', 'one_to_many', 'one_to_one', 'pre_save', 'primary_key', 'register_lookup', 'rel_db_type', 'related_model', 'remote_field', 'run_validators', 'save_form_data', 'select_format', 'serialize', 'set_attribu tes_from_name', 'system_check_deprecated_details', 'system_check_removed_details', 'to_python', 'unique', 'unique_for_date', 'unique_for_month', 'unique_for_yea r', 'validate', 'validators', 'value_from_object', 'value_to_string', 'verbose_name'] >>> s1.verbose_name 'source' >>>
Microsoft Windows [版本 6.1.7601] 版权所有 (c) 2009 Microsoft Corporation。保留所有权利。 F:python从入门到放弃实战11.22PerfectCRM>dir 驱动器 F 中的卷没有标签。 卷的序列号是 0007-4A5F F:python从入门到放弃实战11.22PerfectCRM 的目录 2018/12/04 13:51 <DIR> . 2018/12/04 13:51 <DIR> .. 2018/12/05 09:44 <DIR> .idea 2018/12/04 13:48 <DIR> crm 2018/12/04 17:17 <DIR> king_admin 2018/11/22 15:44 557 manage.py 2018/12/04 14:18 <DIR> PerfectCRM 2018/11/23 14:29 <DIR> statics 2018/11/23 16:53 <DIR> student 2018/12/04 14:17 <DIR> templates 1 个文件 557 字节 9 个目录 267,912,523,776 可用字节 F:python从入门到放弃实战11.22PerfectCRM>python manage.py shell Python 3.6.4 (v3.6.4:d48eceb, Dec 19 2017, 06:54:40) [MSC v.1900 64 bit (AMD64)] on win32 Type "help", "copyright", "credits" or "license" for more information. (InteractiveConsole) >>> from crm import shell Traceback (most recent call last): File "<console>", line 1, in <module> ImportError: cannot import name 'shell' >>> from crm import models >>> models.UserProfile._meta.app_label 'crm' >>> models.UserProfile._meta.verbose_name_plural 'user profiles' >>> models.Customer._meta.verbose_name_plural '客户表' >>> models.Customer._meta.verbose_name '客户表' >>> >>> >>> >>> >>> dir(importlib) Traceback (most recent call last): File "<console>", line 1, in <module> NameError: name 'importlib' is not defined >>> import importlib >>> dir(importlib) ['_RELOADING', '__all__', '__builtins__', '__cached__', '__doc__', '__file__', '__import__', '__loader__', '__name__', '__package__', '__path__', '__spec__', '_ bootstrap', '_bootstrap_external', '_imp', '_r_long', '_w_long', 'abc', 'find_loader', 'import_module', 'invalidate_caches', 'machinery', 'reload', 'sys', 'type s', 'util', 'warnings'] >>> >>> importlib.import_module('crm') <module 'crm' from 'F:\python从入门到放弃\实战\11.22\PerfectCRM\crm\__init__.py'> >>> importlib.import_module('crm.models') <module 'crm.models' from 'F:\python从入门到放弃\实战\11.22\PerfectCRM\crm\models.py'> >>> m=importlib.import_module('crm.models') >>> m <module 'crm.models' from 'F:\python从入门到放弃\实战\11.22\PerfectCRM\crm\models.py'> >>> m.UserProfile <class 'crm.models.UserProfile'> >>> dir(m) ['Branch', 'ClassList', 'Course', 'CourseRecord', 'Customer', 'CustomerFollowUp', 'Enrollment', 'Menu', 'Payment', 'Role', 'StudyRecord', 'Tag', 'User', 'UserPr ofile', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'models'] >>> dir(m.models) ['Aggregate', 'AutoField', 'Avg', 'BLANK_CHOICE_DASH', 'BigAutoField', 'BigIntegerField', 'BinaryField', 'BooleanField', 'CASCADE', 'Case', 'CharField', 'CommaS eparatedIntegerField', 'Count', 'DEFERRED', 'DO_NOTHING', 'DateField', 'DateTimeField', 'DecimalField', 'DurationField', 'EmailField', 'Empty', 'Exists', 'Expre ssion', 'ExpressionList', 'ExpressionWrapper', 'F', 'Field', 'FieldDoesNotExist', 'FileField', 'FilePathField', 'FilteredRelation', 'FloatField', 'ForeignKey', 'ForeignObject', 'Func', 'GenericIPAddressField', 'IPAddressField', 'ImageField', 'Index', 'IntegerField', 'Lookup', 'Manager', 'ManyToManyField', 'ManyToManyRe l', 'ManyToOneRel', 'Max', 'Min', 'Model', 'NOT_PROVIDED', 'NullBooleanField', 'ObjectDoesNotExist', 'OneToOneField', 'OneToOneRel', 'OrderWrt', 'OuterRef', 'PR OTECT', 'PositiveIntegerField', 'PositiveSmallIntegerField', 'Prefetch', 'ProtectedError', 'Q', 'QuerySet', 'RowRange', 'SET', 'SET_DEFAULT', 'SET_NULL', 'SlugF ield', 'SmallIntegerField', 'StdDev', 'Subquery', 'Sum', 'TextField', 'TimeField', 'Transform', 'URLField', 'UUIDField', 'Value', 'ValueRange', 'Variance', 'Whe n', 'Window', 'WindowFrame', '__all__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__path__', '__spec__', 'a ggregates', 'aggregates_all', 'base', 'constants', 'deletion', 'expressions', 'fields', 'fields_all', 'functions', 'indexes', 'indexes_all', 'lookups', 'manager ', 'options', 'prefetch_related_objects', 'query', 'query_utils', 'signals', 'sql', 'utils'] >>> m <module 'crm.models' from 'F:\python从入门到放弃\实战\11.22\PerfectCRM\crm\models.py'> >>> m.Customer.objects.all()[1] <Customer: qrqewrqe> >>> m.Customer.objects.all()[0] <Customer: 12313123> >>> m.Customer.objects.all()[0].qq '12313123' >>> c=m.Customer.objects.all()[1] >>> c <Customer: qrqewrqe> >>> c.source 2 >>> c._meta.fields (<django.db.models.fields.AutoField: id>, <django.db.models.fields.CharField: name>, <django.db.models.fields.CharField: qq>, <django.db.models.fields.CharField : qqname>, <django.db.models.fields.CharField: phone>, <django.db.models.fields.SmallIntegerField: source>, <django.db.models.fields.CharField: referral_from>, <django.db.models.fields.related.ForeignKey: consult_course>, <django.db.models.fields.TextField: content>, <django.db.models.fields.related.ForeignKey: consult ant>, <django.db.models.fields.TextField: memo>, <django.db.models.fields.CharField: status>, <django.db.models.fields.DateTimeField: date>) >>> c._meta.get_field('source') <django.db.models.fields.SmallIntegerField: source> >>> s1=c._meta.get_field('source') >>> dir(s1) ['__class__', '__copy__', '__deepcopy__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__ha sh__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__size of__', '__str__', '__subclasshook__', '__weakref__', '_check_backend_specific_checks', '_check_choices', '_check_db_index', '_check_deprecation_details', '_chec k_field_name', '_check_max_length_warning', '_check_null_allowed_for_primary_keys', '_check_validators', '_clear_cached_lookups', '_db_tablespace', '_descriptio n', '_error_messages', '_get_default', '_get_flatchoices', '_get_lookup', '_unique', '_unregister_lookup', '_validators', '_verbose_name', 'attname', 'auto_crea ted', 'auto_creation_counter', 'blank', 'cached_col', 'cast_db_type', 'check', 'choices', 'class_lookups', 'clean', 'clone', 'column', 'concrete', 'contribute_t o_class', 'creation_counter', 'db_check', 'db_column', 'db_index', 'db_parameters', 'db_tablespace', 'db_type', 'db_type_parameters', 'db_type_suffix', 'deconst ruct', 'default', 'default_error_messages', 'default_validators', 'description', 'editable', 'empty_strings_allowed', 'empty_values', 'error_messages', 'flatcho ices', 'formfield', 'get_attname', 'get_attname_column', 'get_choices', 'get_col', 'get_db_converters', 'get_db_prep_save', 'get_db_prep_value', 'get_default', 'get_filter_kwargs_for_object', 'get_internal_type', 'get_lookup', 'get_lookups', 'get_pk_value_on_save', 'get_prep_value', 'get_transform', 'has_default', 'hel p_text', 'hidden', 'is_relation', 'many_to_many', 'many_to_one', 'max_length', 'merge_dicts', 'model', 'name', 'null', 'one_to_many', 'one_to_one', 'pre_save', 'primary_key', 'register_lookup', 'rel_db_type', 'related_model', 'remote_field', 'run_validators', 'save_form_data', 'select_format', 'serialize', 'set_attribu tes_from_name', 'system_check_deprecated_details', 'system_check_removed_details', 'to_python', 'unique', 'unique_for_date', 'unique_for_month', 'unique_for_yea r', 'validate', 'validators', 'value_from_object', 'value_to_string', 'verbose_name'] >>> s1.verbose_name 'source' >>> s1.choices ((0, '转介绍'), (1, 'QQ群'), (2, '官网'), (3, '百度推广'), (4, '51CTU'), (5, '知乎'), (6, '市场推广')) >>> >>> >>> s1._check_choices <bound method Field._check_choices of <django.db.models.fields.SmallIntegerField: source>> >>> s1.default <class 'django.db.models.fields.NOT_PROVIDED'> >>> s1.get_choices() [('', '---------'), (0, '转介绍'), (1, 'QQ群'), (2, '官网'), (3, '百度推广'), (4, '51CTU'), (5, '知乎'), (6, '市场推广')] >>> >>> >>> getattr(c,'get_soure_display') Traceback (most recent call last): File "<console>", line 1, in <module> AttributeError: 'Customer' object has no attribute 'get_soure_display' >>> getattr(c,'get_source_display') functools.partial(<bound method Model._get_FIELD_display of <Customer: qrqewrqe>>, field=<django.db.models.fields.SmallIntegerField: source>) >>> getattr(c,'get_source_display')() '官网' >>>