Форум сайта python.su
Подскажите, пожалуйста, как из модели получить словарь:
user = Users.objects.get(id=id_user)
Отредактировано FishHook (Дек. 22, 2012 17:16:02)
Офлайн
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)
Офлайн
ок, спасибо..
думал я, что метод у Model есть, который так делает..
Офлайн
То ли я чего-то не понимаю, то ли это какой-то бред…
d.update({field:getattr(t,field)})
d[field] = getattr(t, field)
Отредактировано (Март 13, 2011 22:21:56)
Офлайн
ZZZ, да! Вы правы, так правильнее.
Просто изначально я через генераторы написал, но это не очень explicitly вышло, и я поменял а про этот кусок забыл
Офлайн
del3dUser.objects.values().get(id=1)
Подскажите, пожалуйста, как из модели получить словарь:как из user сделать словарь с именами полей и их значениями?user = Users.objects.get(id=id_user)
Офлайн
Спасибо, aabp..
Офлайн
А не проще ли from django.forms.models import 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'))
Отредактировано (Авг. 12, 2011 17:09:41)
Офлайн
как минимум Вы должны знать нужные Вам поля, тогда на помощь придет метод values
Офлайн