2010-09-11 12 views
18

Posso ottenere il tipo di campo del modello da un queryset del modello in Django?Posso ottenere il tipo di campo di modelli da un modello queryset in Django?

Per esempio: a è queryset b il modello di e il modello b ha seguenti campi:

  • f: Charfield
  • g: ForeignKey
  • h: ManyToMany

C'è un modo per ottenere il campo di tipo g dal queryset a? thx.

+0

Perché avresti bisogno il tipo di campo? Non sarebbe più semplice controllare i risultati e determinare il tipo di campo dal risultato. – Dean

risposta

34

ho la risposta:

a.model._meta.get_field('g').get_internal_type() 
+1

Sono nuovo in Python, ma ho pensato che l'underscore principale significava "non usare". – TimP

+3

@TimP in genere il trattino basso principale indica "non utilizzare". Tuttavia, deduco dalla lettura di SO che l'oggetto '_meta' è stato sempre più canonico in Django nelle ultime versioni, ed è ampiamente utilizzato internamente in Django. Io dico di andare avanti e usarlo, ma assicurati di eseguire i tuoi test (stai scrivendo unit test, giusto?) Quando aggiorni le versioni di Django. Ma in generale, hai ragione, evita di usare i simboli _single_leading_underscore dalle librerie di terze parti in Python. – wkschwartz

Problemi correlati