Sto esponendo un'API per un modello particolare e desidero serializzare alcuni dei relativi campi. Questi campi correlati sono comunemente ripetuti e non voglio dover eseguire numerose query db per ogni serializzazione del campo correlata. Esiste un modo semplice per interrogare preventivamente tutte le istanze correlate e quindi avere il serializzatore RelatedField che lo cerca in un dizionario? O forse per specificare da ModelSerializer del campo correlato?C'è un modo per pre-cercare i modelli di campo correlati?
7
A
risposta
5
È possibile utilizzare i metodi standard di Django prefetch_related e select_related sul queryset.
Nella vista, utilizzare l'attributo queryset
anziché il collegamento model
. Ad esempio ...
class ExampleView(generics.ListCreateAPIView):
serializer_class = ExampleSerializer
queryset = Example.objects.select_related(...)
Problemi correlati
- 1. Ordinamento di modelli correlati con Laravel/Eloquent
- 2. Laravel 5: come recuperare i modelli correlati cancellati?
- 3. metodo backbone-relational .set() che non aggiorna i modelli correlati
- 4. Laravel Eloquent: come ordinare i risultati dei modelli correlati?
- 5. Recupera sempre dai modelli correlati in Bookshelf.js
- 6. Ottenere un elenco di modelli correlati nei binari
- 7. Un problema filtrando modelli correlati all'interno della definizione del modello
- 8. modelli django che selezionano un singolo campo
- 9. C'è un modo più semplice di creare/scegliere i dati correlati con ActiveAdmin?
- 10. Consigli per i modelli di modelli
- 11. Il modo migliore per caricare i modelli in CakePHP 2.0
- 12. Un modo migliore di mescolare due elenchi correlati
- 13. Più modelli NG su un campo di input?
- 14. È un modo corretto per refactoring modelli di grasso ActiveRecord?
- 15. Tidy per i modelli Jinja2
- 16. Esiste un buon WikiField per i modelli django?
- 17. Campo UUID aggiunto dopo i dati già nel database. C'è un modo per popolare il campo UUID per i dati esistenti?
- 18. Esiste un riferimento per i modelli di comportamento/percezione umani?
- 19. Un modo semplice per precompilare i modelli di Handlebar Emberjs con nodejs?
- 20. In che modo i callback di SurfaceHolder sono correlati al ciclo di vita di Activity?
- 21. Django plurale per i modelli
- 22. C'è un modo per disattivare i modelli personalizzati con un commento in ReSharper
- 23. tipo di conversione per i modelli
- 24. laravel: Eloquente come aggiornare un modello e modelli correlati in una volta
- 25. come impostare il valore predefinito per un campo nei modelli di Sails usando l'ORM Waterline?
- 26. Nei modelli django hanno un campo timestamp predefinito?
- 27. C'è un buon modo per controllare come i template di visualizzazione dovrebbero rendere i campi nulli?
- 28. I migliori siti Web per i modelli di progettazione?
- 29. Youtube Javascript API - disabilita i video correlati
- 30. Reimposta i modelli/i modelli di fixtureAdapter per ember-data nei test
Grazie Tom. Non ero a conoscenza di prefetch_related. Anche se sembra che sia meglio usarlo piuttosto che non, non è ancora l'implementazione più efficiente per il mio scenario. I motivi sono: (1) utilizza la query IN che è più query, mentre la mia applicazione può prevedere in una query i risultati di cui ha bisogno; e (2) la maggior parte dei campi relativi usano la stessa classe di modello e non sembra che il prefect_related ne sia intelligente. Avete altri suggerimenti per un modo più personalizzato di farlo? – jacob
Non sono esattamente sicuro di come sia il tuo caso d'uso, ma se hai bisogno di qualcosa di personalizzato che non si adatta perfettamente alle visualizzazioni generiche pre-fornite, ti suggerisco di scrivere esplicitamente i metodi di visualizzazione. –
Ad esempio, come nella prima parte del tutorial parte 3 ... http://django-rest-framework.org/tutorial/3-class-based-views.html –