Reputation: 1
I have the following model:
class Student(models.Model):
name = models.CharField(max_length=50)
surname = models.CharField(max_length=50)
city = models.CharField(max_length=50)
country = models.CharField(max_length=50)
skypeid = models.CharField(max_length=100)
email = models.EmailField(max_length=75)
youtubechannel = models.URLField(max_length=200)
def __unicode__(self):
return self.surname
class LanguageKnowledge(models.Model):
LOW = 'LOW'
MEDIUM = 'MED'
ADVANCED = 'ADV'
EXPERT = 'EXP'
LANGUAGE_KNOWLEDGE_CHOICES =(
(LOW, 'LOW'),
(MEDIUM, 'Medium'),
(ADVANCED,'Advanced'),
(EXPERT, 'Expert'),
)
student = models.ForeignKey(Student)
language = models.ForeignKey(Language)
grammar = models.CharField(max_length=3, choices=LANGUAGE_KNOWLEDGE_CHOICES)
reading = models.CharField(max_length=3, choices=LANGUAGE_KNOWLEDGE_CHOICES)
speaking = models.CharField(max_length=3, choices=LANGUAGE_KNOWLEDGE_CHOICES)
writing = models.CharField(max_length=3, choices=LANGUAGE_KNOWLEDGE_CHOICES)
def __unicode__(self):
return u'%s : %s' % (self.student, self.language)
Then the following view
def student(request, student_id):
try:
studentdetails = Student.objects.get(pk=student_id)
languageknowledge_list = LanguageKnowledge.objects.filter(student__id__exact=student_id)
except Student.DoesNotExist:
raise Http404
return render(request, 'broker/student.html',
{'studentdetails': studentdetails,
'languageknowledge_list': languageknowledge_list})
However the following template does not list the different languages that are present in languageknowledge_list. As a more general question, how can I list, via template, a query set involving one to many relationships (e.g. a student speaking several languages) ?
{% block content %}
<ul>
{% for languageknowlege in languageknowledge_list %}
<li>{{ languageknowledge.language }}, h2 got it,</li>
{% endfor %}
</ul>
{% endblock %}
Upvotes: 0
Views: 54
Reputation: 10690
You have misspelling in your template for languageknowledge
variable.
Change this line:
{% for languageknowlege in languageknowledge_list %}
<li>{{ languageknowledge.language }}, h2 got it,</li>
To:
{% for languageknowledge in languageknowledge_list %}
<li>{{ languageknowledge.language }}, h2 got it,</li>
Note that it's better to using good ide
that at least have spell checker, also separate your name of variables by _
when are combinatorial, for example using language_knowledge
instead of languageknowledge
to help spell checker to better detect typo.
Upvotes: 1