Ich habe eine Anwendung namens "Schule" in einem meiner Django-Projekte.Wie kann ich related_name in Django-Modellen korrekt verwenden, um den Klassennamen zurückzuerhalten?
Unten ist der Code von models.py
from django.db import models
class Student(models.Model):
name = models.CharField(max_length=255)
birthday = models.DateField(blank=True)
class Class(models.Model):
name = models.CharField(max_length=255)
student = models.ForeignKey(Student,related_name='classes',null=True)
def __str__(self):
return self.name
Und jetzt views.py:
from django.shortcuts import render
from .models import *
def test(request):
obj2 = Student.objects.get(name='john')
return render(request,'test/list.html', {'obj2':obj2})
Und schließlich meine Vorlage sieht wie folgt aus:
{% block content %}
<h2>
{{ obj2.classes }}
</h2>
{% endblock %}
In meiner Vorlage verwende ich obj2.classes (d. H. Responseobject.related_name). Ich möchte, dass der Klassenname gedruckt wird. Allerdings, wenn ich die Website unter http://127.0.0.1:8000/shop/ zugreifen, es gibt mir diese Ausgabe:
shop.Class.None
Wie werde ich die Ausgabe als nur „Klasse“ erhalten, dass der Klassenname ist?
'obj2.classes' wäre ein RelatedManager, der die einzelnen zugehörigen" Klassen "-Instanzen bereitstellen kann. Also in Ihrer Vorlage, sollten Sie es mit etwa wie '{% für cls in obj2.classes.all 5%} {0}} {{cls}} {% endfor%} ' –
@ Håken Lid, ich glaube nicht. In meinem Beispiel enthält obj2 nur eine Instanz, da ich obj2 = Student.objects.get (name = 'john') verwendet habe. –