[Python] Accesso alla query set object nel template django


Answers

Prima di tutto, vorrei dire che qualcosa sembra sbagliato con lo schema del tuo database. Se "c", "e", "r" e altri sono i veri nomi delle colonne, prendi in considerazione la possibilità di rinominarle. In secondo luogo, nell'esempio codice Python che hai presentato, IndexErrors non viene catturato. Se si desidera ottenere il primo Animale correlato all'oggetto Umano, sarebbe opportuno creare un metodo getter nel modello Umano:

def get_first_animal(self):
  try:
    return self.animal_set[0]
  except IndexError:
    return None

Se devi mostrare tutti gli animali dal modello, puoi provare qualcosa come questo:

{% for animal in human.animal_set.all %}
{{ animal }}
{% endfor %}

I nomi delle variabili fornite sono diversi, ma nel tuo caso sarebbe bene ridimensionare il codice.

Question

Ho due modelli, chiamati Human e Animal . La chiave primaria di Human è la chiave straniera nel modello Animal. Entrambi hanno 3 colonne ciascuno. Il modello umano ha colonne c, e, r. Il modello animale ha colonne l, i, p. Sto eseguendo una query di django sul modello Human, come questo.

result = Human.objects.filter().order_by('r')

result è un oggetto queryset. Questo oggetto viene inviato dal mio file di visualizzazione a una pagina di modello di Django. All'interno della pagina del modello sto collegando i result e visualizzando i valori delle colonne.

Ora quello che voglio fare è, voglio anche recuperare il valore della colonna p (che è presente nel modello Animal) all'interno dello stesso ciclo, all'interno di quel template di Django. Come possiamo farlo nella pagina del modello django.

Nel file python posso fare così

for i in result:
    print i.animal_set.values()[0]['p']

Ma voglio farlo nella pagina del modello.