現在、QuerySet の結果を JSON 文字列に配置して、js フロントエンドで使用しています。
現在、これは .values() と simplejson を使用して十分に簡単です:
simplejson.dumps(list(Task.objects.filter(list=mylist).values()))
Task オブジェクトに ManyToMany フィールドを追加しました。ManyToMany 関係の値ごとに各 Task オブジェクトを繰り返さずに出力に含めたいと考えています。
私がやった場合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 値を配置することです。これを行うより良い方法はありますか?そうでない場合、これは恐ろしく非効率的でしょうか?