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'
>>>
View Code

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')()
'官网'
>>>
View Code

>>> getattr(c,'get_source_display')()
'官网'
>>> dir(c)
['DoesNotExist', 'MultipleObjectsReturned', '__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__',
'__getstate__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__
repr__', '__setattr__', '__setstate__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', '_check_column_name_clashes', '_check_field_name_clashes', '
_check_fields', '_check_id_field', '_check_index_together', '_check_indexes', '_check_local_fields', '_check_long_column_names', '_check_m2m_through_same_relati
onship', '_check_managers', '_check_model', '_check_model_name_db_lookup_clashes', '_check_ordering', '_check_property_name_related_field_accessor_clashes', '_c
heck_single_primary_key', '_check_swappable', '_check_unique_together', '_do_insert', '_do_update', '_get_FIELD_display', '_get_next_or_previous_by_FIELD', '_ge
t_next_or_previous_in_order', '_get_pk_val', '_get_unique_checks', '_meta', '_perform_date_checks', '_perform_unique_checks', '_save_parents', '_save_table', '_
set_pk_val', '_state', 'check', 'clean', 'clean_fields', 'consult_course', 'consult_course_id', 'consultant', 'consultant_id', 'content', 'customerfollowup_set'
, 'date', 'date_error_message', 'delete', 'enrollment_set', 'from_db', 'full_clean', 'get_deferred_fields', 'get_next_by_date', 'get_previous_by_date', 'get_sou
rce_display', 'get_status_display', 'id', 'memo', 'name', 'objects', 'payment_set', 'phone', 'pk', 'prepare_database_save', 'qq', 'qqname', 'referral_from', 're
fresh_from_db', 'save', 'save_base', 'serializable_value', 'source', 'source_choices', 'status', 'status_choice', 'tags', 'unique_error_message', 'validate_uniq
ue']
>>> 
>>> getattr(c,'get_status_display')()
'已报名'
>>> getattr(c,'get_next_by_date')()
<Customer: iiiiii>
>>> getattr(c,'get_previous_by_date')()
<Customer: 12313123>
>>>

  

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)
>>> import importlib
>>> m=importlib.import_module('crm.models')
>>> m
<module 'crm.models' from 'F:\python从入门到放弃\实战\11.22\PerfectCRM\crm\models.py'>
>>> c=m.Customer.objects.all()[0]
>>> c
<Customer: 12313123>
>>> 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: 12313123>>, field=<django.db.models.fields.SmallIntegerField: source>)
>>> getattr(c,'get_source_display')()
'QQ群'
>>> n=getattr(c,'get_source_display')()
>>> n
'QQ群'
>>> type(n)
<class 'str'>
>>> type(n).__name__
'str'
>>>

 

  

原文地址:https://www.cnblogs.com/Mengchangxin/p/10064091.html