Come posso convertire un Djery QuerySet in una lista di dict? Non ho trovato una risposta a questo quindi mi chiedo se mi manca una sorta di funzione di supporto comune che tutti usano.Come posso convertire un Djery QuerySet in un elenco di dict?
risposta
utilizzare il metodo .values()
:
>>> Blog.objects.values()
[{'id': 1, 'name': 'Beatles Blog', 'tagline': 'All the latest Beatles news.'}],
>>> Blog.objects.values('id', 'name')
[{'id': 1, 'name': 'Beatles Blog'}]
Nota: il risultato è un QuerySet
che si comporta in gran parte come una lista, ma in realtà non è un caso di list
. Usa list(Blog.objects.values(…))
se hai davvero bisogno di un'istanza di list
.
Non si definisce esattamente come dovrebbe apparire il dizionario, ma molto probabilmente si fa riferimento a QuerySet.values()
. Dal official django documentation:
Restituisce una
ValuesQuerySet
- una sottoclasseQuerySet
che restituisce dizionari quando viene utilizzato come un iterabile, piuttosto che il modello-esempio oggetti.Ciascuno di questi dizionari rappresenta un oggetto, con i tasti corrispondenti ai nomi degli attributi degli oggetti del modello.
Il metodo .values()
restituirà un risultato di tipo ValuesQuerySet
che in genere è quello che ti serve nella maggior parte dei casi.
Ma se lo si desidera, è possibile trasformare ValuesQuerySet
in un elenco Python nativo utilizzando la comprensione degli elenchi Python come illustrato nell'esempio seguente.
result = Blog.objects.values() # return ValuesQuerySet object
list_result = [entry for entry in result] # converts ValuesQuerySet into Python list
return list_result
Trovo quanto sopra aiuta se si sta scrivendo unit test e la necessità di affermare che il valore di ritorno atteso di una funzione corrisponde al valore di rendimento effettivo, in questo caso sia expected_result
e actual_result
devono essere dello stesso tipo (es. dizionario).
actual_result = some_function()
expected_result = {
# dictionary content here ...
}
assert expected_result == actual_result
Oppure puoi semplificare la conversione in lista con questo 'elenco (risultato)' –
È possibile utilizzare il metodo values()
sul dict avete ottenuto dal campo Modello Django si fanno le query su e poi si può facilmente accedere a ogni campo da un valore di indice.
chiamare in questo modo -
myList = dictOfSomeData.values()
itemNumberThree = myList[2] #If there's a value in that index off course...
Se avete bisogno di tipi di dati nativi per qualche motivo (ad esempio JSON serializzazione) questo è il mio veloce 'n' modo sporco per farlo:
data = [{'id': blog.pk, 'name': blog.name} for blog in blogs]
Come puoi vedere, la dict all'interno della lista non è ESSENZIALE, quindi se qualcuno conosce un modo migliore ...
- 1. Come convertire un elenco per QuerySet Django
- 2. Come convertire un Django QuerySet a un elenco
- 3. Come convertire un pymongo.cursor.Cursor in un dict?
- 4. Come convertire un OrderedDict in un dict regolare python3
- 5. convertire un dict per dict ordinato in python
- 6. Come posso convertire l'output di asp: SiteMapPath in un elenco?
- 7. modo elegante per trasformare un elenco di dict in un dict di dicts
- 8. Come posso testare un queryset vuoto in Django?
- 9. Cos'è un django QuerySet?
- 10. Convertire un elenco di tuple in un elenco di liste
- 11. Python: voci di elenco di gruppo in un dict
- 12. Convertire un queryset in json utilizzando la risorsa tastypie
- 13. Come posso convertire un elenco di dizionari in un dizionario di liste in Python?
- 14. Django Queryset per dict per l'uso in JSON
- 15. convertire xml in python dict
- 16. RxJava: Come convertire un elenco di oggetti in un elenco di altri oggetti
- 17. Come posso valutare un elenco di stringhe come un elenco di tuple in Python?
- 18. Aggiornare un dict con parte di un altro dict
- 19. Come convertire da un elenco di elenchi a un elenco in nomi di ritenzione R?
- 20. Python: come posso scrivere un elenco in un file e poi richiamarlo in memoria (dict rappresentato come stringa convertita in dict) in seguito?
- 21. come convertire un oggetto dict python in un oggetto equivalente java?
- 22. Convertire un elenco di elenchi in un vettore di caratteri
- 23. pitone ottenere un elenco di valori dalla lista di dict
- 24. come convertire un elenco in un dataframe panda
- 25. Come convertire un java.util.List in un elenco Scala
- 26. Come convertire un dataframe in un elenco annidato?
- 27. Python: ottenere un dict da un elenco basato su qualcosa all'interno del dict
- 28. Come posso convertire un DataTable in un oggetto dinamico?
- 29. Python conta elementi in valore dict che è un elenco
- 30. Come convertire un elenco di oggetti in un elenco di interfacce?
sì specifichi quali campi vuoi 'valori()' per restituirli passandoli come argomenti. Fai attenzione anche se sembra che i valori restituiscano una lista di dicts in realtà un '' e non una lista. –
dm03514
questo in realtà non restituisce un elenco se – astreltsov
Grazie! Aggiornato. –