Ich habe gerade mit Django angefangen und versuche herauszufinden, wie das Zeug funktioniert. Ich stehe mit dem folgenden Problem fest.Django Python - wähle Spalte aus verwandtem Objekt in einer Vorlage
Ich habe einen models.py:
class Station(models.Model):
code = models.CharField(max_length=10, default='')
land = models.CharField(max_length=10, default='')
def __str__(self):
return self.code
class Naam(models.Model):
kort = models.CharField(max_length=255, default='')
middel = models.CharField(max_length=255, default='')
lang = models.CharField(max_length=255, default='')
station = models.ForeignKey(Station, default='', on_delete=models.CASCADE, related_name='namen')
def __str__(self):
return self.lang
Ich habe einen view.py:
def index(request):
all_stations = Station.objects.all()
return render(request,'stations/index.html', {'all_stations' : all_stations})
def detail(request, station_id):
try:
station = Station.objects.get(id=station_id)
stationnamen = station.namen.values()
except Station.DoesNotExist:
raise Http404("station does not exist")
return render(request, 'stations/detail.html', {'stationnamen' : stationnamen.values()})
In einer Vorlage html einige Details über eine Station (kort zu zeigen, ich versuche, Middel, Lang) Namen. Ist es möglich, ein bestimmtes Feld in der queryset zu zeigen, wie:
<h1>{{ stationnamen.kort }}</h1>
In der Shell ich in der Lage bin, dies zu tun, wie folgt:
station1.namen.values('kort')
Wie diese Arbeit in Template-Dateien?
Danke!
Danke für die Antwort! Ich wollte nur den Wert 'kort', 'middel' in der Vorlage. Wie:
{{}} station.namen.kort
{{}} station.namen.middel
{{}} station.namen.lang
Warum ist eine FOR-Anweisung erforderlich? Und was, wenn es nur eine Eins-zu-Eins-Beziehung gibt? In diesem Fall erscheint mir ein FOR ein bisschen komisch. –Sie verwenden ForeignKey. So kann es viele zu eins sein. Wenn Sie eine Eins-zu-Eins-Beziehung wünschen, müssen Sie https://docs.djangoproject.com/en/1.10/topics/db/examples/one_to_one/ verwenden. Sie können das gesamte Feld anzeigen. Also in deinem Fall, Werte, es ist nicht gut. Sie müssen Daniel Lösung verwenden. Abfragegruppe des Naam-Objekts abrufen – Wilfried
Große Antwort! Macht jetzt Sinn. –