Уведомления

Группа в Telegram: @pythonsu

#1 Март 13, 2011 21:10:49

del3d
От:
Зарегистрирован: 2010-03-12
Сообщения: 87
Репутация: +  0  -
Профиль   Отправить e-mail  

model to dict

Подскажите, пожалуйста, как из модели получить словарь:

user = Users.objects.get(id=id_user)
как из user сделать словарь с именами полей и их значениями?



Отредактировано FishHook (Дек. 22, 2012 17:16:02)

Офлайн

#2 Март 13, 2011 21:44:27

H1D
От:
Зарегистрирован: 2011-03-12
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

model to dict

d={}
user = Users.objects.get(id=id_user)
for field in user._meta.get_all_field_names()
d.update({field:getattr(user,field)})



Отредактировано (Март 13, 2011 23:46:54)

Офлайн

#3 Март 13, 2011 22:02:28

del3d
От:
Зарегистрирован: 2010-03-12
Сообщения: 87
Репутация: +  0  -
Профиль   Отправить e-mail  

model to dict

ок, спасибо..
думал я, что метод у Model есть, который так делает..



Офлайн

#4 Март 13, 2011 22:21:34

ZZZ
От: Москва
Зарегистрирован: 2008-04-03
Сообщения: 2161
Репутация: +  26  -
Профиль   Адрес электронной почты  

model to dict

То ли я чего-то не понимаю, то ли это какой-то бред…

d.update({field:getattr(t,field)})
Может более красиво и по-питоньи?
d[field] = getattr(t, field)



Отредактировано (Март 13, 2011 22:21:56)

Офлайн

#5 Март 13, 2011 23:46:38

H1D
От:
Зарегистрирован: 2011-03-12
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

model to dict

ZZZ, да! Вы правы, так правильнее.
Просто изначально я через генераторы написал, но это не очень explicitly вышло, и я поменял а про этот кусок забыл



Офлайн

#6 Март 14, 2011 00:59:19

aabp
От:
Зарегистрирован: 2011-03-14
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

model to dict

del3d
Подскажите, пожалуйста, как из модели получить словарь:
user = Users.objects.get(id=id_user)
как из user сделать словарь с именами полей и их значениями?
User.objects.values().get(id=1)



Офлайн

#7 Март 14, 2011 08:08:43

del3d
От:
Зарегистрирован: 2010-03-12
Сообщения: 87
Репутация: +  0  -
Профиль   Отправить e-mail  

model to dict

Спасибо, aabp..



Офлайн

#8 Авг. 10, 2011 23:54:37

AlexanderDanilov
От: Ukraine, Kiev
Зарегистрирован: 2007-10-17
Сообщения: 29
Репутация: +  0  -
Профиль   Отправить e-mail  

model to dict

А не проще ли from django.forms.models import model_to_dict использовать?



Офлайн

#9 Авг. 11, 2011 16:34:02

Ziberbulger
От:
Зарегистрирован: 2010-05-08
Сообщения: 76
Репутация: +  0  -
Профиль   Отправить e-mail  

model to dict

у объекта должен быть атрибут __dict__. Это словарь, в котором содержатся методы и все атрибуты объекта, включая базовые. Я пользуюсь такой функцией, чтобы исключить лишнее

def obj_to_dict(obj):
''' Convert object to dictonary where keys are names of attributes
and values are values of attributes '''

return dict((key, value) for key, value in obj.__dict__.iteritems() \
if not callable(value) \
and not key.startswith('__') \
and not key.startswith('_sa'))
P.S > (_sa - атрибуты добавляемые алхимией)



Отредактировано (Авг. 12, 2011 17:09:41)

Офлайн

#10 Дек. 22, 2012 17:16:21

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

model to dict

как минимум Вы должны знать нужные Вам поля, тогда на помощь придет метод values



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version