155 votes

Comment renommer des éléments dans values() dans Django ?

Je veux faire à peu près la même chose que dans ce ticket sur djangoproject.com, mais avec un formatage supplémentaire. De cette requête

>>> MyModel.objects.values('cryptic_value_name')
[{'cryptic_value_name': 1}, {'cryptic_value_name': 2}]

Je veux quelque chose comme ça :

>>> MyModel.objects.values(renamed_value='cryptic_value_name')
[{'renamed_value': 1}, {'renamed_value': 2}]

Y a-t-il un autre moyen, plus constructif, ou dois-je le faire manuellement ?

0voto

Sudip Bhattarai Points 643

Je travaille avec django 1.11.6

( Et la paire clé :valeur est opposée à celle de la réponse acceptée)

Voici comment je fais pour que ça marche pour mon projet

def json(university):
    address = UniversityAddress.objects.filter(university=university)
    address = address.extra(select={'city__state__country__name': 'country', 'city__state__name': 'state', 'city__name': 'city'})
    address = address.values('country', 'state', "city", 'street', "postal_code").get()
    return address

Notez que l'ajout d'objetssimultanés.filter ().extra ().values() est le même que ci-dessus.

0voto

burhanuddin abbas Points 170

Essayez de passer en tant que kwargs :

MyModel.objects.annotate(**{'A B C':F('profile_id')}).values('A B C')

Dans mon cas, il y avait des espaces et d'autres caractères spéciaux inclus dans la clé de chaque valeur dans le jeu de résultats, ce qui a fait l'affaire.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X