Python / Django QuerySet к списку диктов? - PullRequest
0 голосов
/ 04 декабря 2011

Это мой код:

obj = Object1.objects.get(pk=1)
other_objs = ob1.other_objs.all()

other_objs - это ManyToManyField для объекта Object1.

Когда я выполняю этот код:

print other_objs[0]

Я не получаю other_obj (который должен быть dict), я получаю строку, основанную на методе __unicode__ в классе other_obj.

Как я могу получить dict other_obj, а не просто строку Unicode?

Ответы [ 2 ]

4 голосов
/ 04 декабря 2011

other_objs[0] будет первым элементом запроса и не будет dict или строкой, а будет объектом модели django, вы можете получить доступ к таким атрибутам, как other_objs[0].myattr1, если вы хотите dict, вы можете запросить определенные атрибуты, используя objects.values_listи затем создайте из них dict, например

attrs = ['id', 'attr1']
values = Object1.objects.values_list(attrs)[0]
obj_dict = dict(zip(attrs, values))

или вы можете использовать сериализацию django , если вы хотите вывести dict или json и т. д., но я думаю, что вам просто нужен объект, идостаточно оригинального запроса.

0 голосов
/ 04 декабря 2011

Когда вы делаете .all(), вы получаете queryset (смотрите как list) объектов, связанных с вашим Object1 объектом.

Итак, когда вы делаете other_objs[0], вы получаете первый связанный объект.И затем, когда вы печатаете его, он вызывает метод __unicode__ для фактической печати объекта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...