Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Django
  • » Получение списка или словаря обекта Model [RSS Feed]

#1 Май 17, 2012 12:28:51

Atterratio
От:
Зарегистрирован: 2011-09-17
Сообщения: 46
Репутация: +  0  -
Профиль   Отправить e-mail  

Получение списка или словаря обекта Model

Я получил объекто методом get:

o = User.objects.get(id=1)

Как теперь мне получить список всех его полей или что лучше словарь?



Офлайн

#2 Май 17, 2012 14:06:24

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Получение списка или словаря обекта Model

Atterratio
Я получил объекто методом get:

o = User.objects.get(id=1)

Как теперь мне получить список всех его полей или что лучше словарь?
o._meta._fields()
o.__dict__
Вообще советую, чаще смотреть что же там творится в этих непонятных моделях
>>>u=User.objects.get(pk=1)
>>>u
<User: admin>
>>>u.__dict__
{'username': u'admin', 'first_name': u'', 'last_name': u'', 'is_active': True, '_state': <django.db.models.base.ModelState object at 0x26cbf50>, 'email': u'', 'is_superuser': True, 'is_staff': True, 'last_login': datetime.datetime(2012, 5, 12, 2, 10, 55), 'password': u'', 'id': 1L, 'date_joined': datetime.datetime(2011, 8, 1, 6, 1, 32)}
>>>dir(u)
['DoesNotExist', 'MultipleObjectsReturned', '__class__', '__delattr__', '__dict__', '__doc__', '__eq__', '__format__', '__getattribute__', '__hash__', '__init__', '__metaclass__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__unicode__', '__weakref__', '_base_manager', '_default_manager', '_deferred', '_get_FIELD_display', '_get_next_or_previous_by_FIELD', '_get_next_or_previous_in_order', '_get_pk_val', '_get_unique_checks', '_meta', '_perform_date_checks', '_perform_unique_checks', '_set_pk_val', '_state', 'check_password', 'clean', 'clean_fields', 'date_error_message', 'date_joined', 'delete', 'email', 'email_user', 'first_name', 'full_clean', 'get_absolute_url', 'get_all_permissions', 'get_full_name', 'get_group_permissions', 'get_next_by_date_joined', 'get_next_by_last_login', 'get_previous_by_date_joined', 'get_previous_by_last_login', 'get_profile', 'groups', 'has_module_perms', 'has_perm', 'has_perms', 'has_usable_password', 'id', 'is_active', 'is_anonymous', 'is_authenticated', 'is_staff', 'is_superuser', 'last_login', 'last_name', 'logentry_set', 'monitoring2_set', 'natural_key', 'objects', 'password', 'pk', 'prepare_database_save', 'region', 'report_set', 'reportletotd_set', 'save', 'save_base', 'school_set', 'serializable_value', 'set_password', 'set_unusable_password', 'territory', 'unique_error_message', 'user_permissions', 'username', 'userstoschool_set', 'validate_unique']
>>> u._meta
<Options for User>
>>> dir(u._meta)
['__class__', '__delattr__', '__dict__', '__doc__', '__format__', '__getattribute__', '__hash__', '__init__', '__module__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', '_field_cache', '_field_name_cache', '_fields', '_fill_fields_cache', '_fill_m2m_cache', '_fill_related_many_to_many_cache', '_fill_related_objects_cache', '_join_cache', '_m2m_cache', '_many_to_many', '_name_map', '_prepare', '_related_many_to_many_cache', '_related_objects_cache', '_related_objects_proxy_cache', 'abstract', 'abstract_managers', 'add_field', 'add_virtual_field', 'admin', 'app_label', 'auto_created', 'auto_field', 'concrete_managers', 'concrete_model', 'contribute_to_class', 'db_table', 'db_tablespace', 'duplicate_targets', 'fields', 'get_add_permission', 'get_all_field_names', 'get_all_related_m2m_objects_with_model', 'get_all_related_many_to_many_objects', 'get_all_related_objects', 'get_all_related_objects_with_model', 'get_ancestor_link', 'get_base_chain', 'get_change_permission', 'get_delete_permission', 'get_field', 'get_field_by_name', 'get_fields_with_model', 'get_latest_by', 'get_m2m_with_model', 'get_ordered_objects', 'get_parent_list', 'has_auto_field', 'init_name_map', 'installed', 'local_fields', 'local_many_to_many', 'managed', 'many_to_many', 'module_name', 'object_name', 'order_with_respect_to', 'ordering', 'parents', 'permissions', 'pk', 'pk_index', 'proxy', 'proxy_for_model', 'related_fkey_lookups', 'setup_pk', 'setup_proxy', 'unique_together', 'verbose_name', 'verbose_name_plural', 'verbose_name_raw', 'virtual_fields']
>>> u._meta._fields
<bound method Options._fields of <Options for User>>
>>> u._meta._fields()
[<django.db.models.fields.AutoField: id>, <django.db.models.fields.CharField: username>, <django.db.models.fields.CharField: first_name>, <django.db.models.fields.CharField: last_name>, <django.db.models.fields.EmailField: email>, <django.db.models.fields.CharField: password>, <django.db.models.fields.BooleanField: is_staff>, <django.db.models.fields.BooleanField: is_active>, <django.db.models.fields.BooleanField: is_superuser>, <django.db.models.fields.DateTimeField: last_login>, <django.db.models.fields.DateTimeField: date_joined>]
>>> u._meta._fields()[0]
<django.db.models.fields.AutoField: id>
>>> dir(u._meta._fields()[0])
['__class__', '__cmp__', '__deepcopy__', '__delattr__', '__dict__', '__doc__', '__format__', '__getattribute__', '__hash__', '__init__', '__module__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', '_choices', '_description', '_get_choices', '_get_flatchoices', '_get_val_from_obj', '_unique', 'attname', 'auto_created', 'auto_creation_counter', 'bind', 'blank', 'choices', 'clean', 'column', 'contribute_to_class', 'creation_counter', 'db_column', 'db_index', 'db_tablespace', 'db_type', 'default', 'default_error_messages', 'default_validators', 'description', 'editable', 'empty_strings_allowed', 'error_messages', 'flatchoices', 'formfield', 'get_attname', 'get_attname_column', 'get_cache_name', 'get_choices', 'get_choices_default', 'get_db_prep_lookup', 'get_db_prep_save', 'get_db_prep_value', 'get_default', 'get_flatchoices', 'get_internal_type', 'get_prep_lookup', 'get_prep_value', 'get_validator_unique_lookup_type', 'has_default', 'help_text', 'max_length', 'model', 'name', 'null', 'pre_save', 'primary_key', 'rel', 'run_validators', 'save_form_data', 'serialize', 'set_attributes_from_name', 'to_python', 'unique', 'unique_for_date', 'unique_for_month', 'unique_for_year', 'validate', 'validators', 'value_from_object', 'value_to_string', 'verbose_name']
Как то так :)



Офлайн

#3 Май 17, 2012 17:54:11

Atterratio
От:
Зарегистрирован: 2011-09-17
Сообщения: 46
Репутация: +  0  -
Профиль   Отправить e-mail  

Получение списка или словаря обекта Model

Хм… Иногда пытаюсь лезть, но по большей части лень… Да и как ожиладоль от приватных методов, они мне несколько неподходят…



Офлайн

#4 Май 17, 2012 18:13:03

Atterratio
От:
Зарегистрирован: 2011-09-17
Сообщения: 46
Репутация: +  0  -
Профиль   Отправить e-mail  

Получение списка или словаря обекта Model

Офлайн

#5 Май 18, 2012 06:46:32

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Получение списка или словаря обекта Model

Atterratio
Хм… Иногда пытаюсь лезть, но по большей части лень… Да и как ожиладоль от приватных методов, они мне несколько неподходят…
1.
С какого суахили сии методы стали приватными?
2.
При чем тут CBV?



Офлайн

  • Начало
  • » Django
  • » Получение списка или словаря обекта Model[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version