django sérialiser queryset.values () en json
J'ai un modèle qui a de nombreux domaines, toutefois, pour ce problème, j'ai seulement besoin de 3 de ces champs. Lorsque j'essaie de sérialiser un .values
j'obtiens une exception
queryset = myModel.objects.filter(foo_icontains=bar).values('f1', 'f2', 'f3')
serialized_q = serializers.serialize('json', queryset, ensure_ascii=False)
source d'informationauteur bash-
Vous devez vous connecter pour publier un commentaire.
Django sérialiseurs ne peut sérialiser queryset,
values()
ne retourne pas queryset plutôtValuesQuerySet
objet. Donc, évitez d'utiliservalues()
. Plutôt, spécifier les champs que vous souhaitez utiliser dansvalues()
dans la méthode serialize comme suit:Regardez cette DONC, la question par exemple
Au lieu d'utiliser
objectQuerySet.values('fileName','id')
spécifier les champs à l'aide de lafields
paramètre deserializers.serialize()
comme indiqué ci-dessus.Que d'autres personnes l'ont dit, Django sérialiseurs ne peut pas gérer un ValuesQuerySet. Cependant, vous pouvez sérialiser en utilisant une norme
json.dumps()
et la transformation de votre ValuesQuerySet d'une liste à l'aide delist()
. Si votre set comprend Django des domaines tels que les Décimales, vous aurez besoin de passer dans DjangoJSONEncoder. Donc:Faire liste à partir de objectQuerySet:
Les jeter à la dict chaque élément et de créer de json json.décharges: