Вывод значений ()для QuerySet с полями ManyToMany

В настоящее время я помещаю результат QuerySet в строку JSON, которая будет использоваться моим интерфейсом js.

В настоящее время это достаточно просто, используя.values ​​()и simplejson :

simplejson.dumps(list(Task.objects.filter(list=mylist).values()))

. Теперь я добавил поле ManyToMany в свой объект Task и хотел бы, чтобы оно было включено в мои выходные данные без повторения каждого объекта Task для каждого значения отношения ManyToMany.

Если бы я просто сделал Task.objects.filter(list=mylist).values('myManyToManyField', 'someOtherField'), на выходе был бы отдельный объект/строка для каждого значения myManyToManyField

[{'myManyToManyField': 1, 'someOtherField': 'valueOne'}, 
{'myManyToManyField': 2, 'someOtherField': 'valueOne'},
{'myManyToManyField': 1, 'someOtherField': 'valueTwo'}]

. Есть ли способ получить этот результат вместо этого?:

[{'myManyToManyField': [1,2], 'someOtherField': 'valueOne'},
{'myManyToManyField': 1, 'someOtherField': 'valueTwo'}]

Единственное решение, которое у меня есть прямо сейчас, — перебрать все объекты Taskи создать вывод вручную, поместив в него значение ManyToMany по желанию. Есть лучший способ это сделать? Если бы не -, было бы это ужасно неэффективно?

11
задан xqwzts 20 August 2012 в 02:09
поделиться