Reputation:
What i want is to display a the name and age of employees here with its department. For like a department header and a list of employee names and age
EG:
(department name1)
name1 age1
name2 age2
(department name2)
name3 age3
I am new to django i used One to Many key i dont get what do i do with in my views and url/ html.
My Models.py
class Department(models.Model):
name = models.CharField(max_length=150)
def __str__(self):
return self.name
class Employee(models.Model):
name = models.CharField(max_length=200)
age = models.CharField(max_length=200)
department = models.ForeignKey(Department, on_delete=models.CASCADE)
def __str__(self):
return self.name
My views.py:
def index(request: HttpRequest) -> HttpResponse:
context = {
'categories': Employee.objects.all()
}
return render(request, 'index.html', context)
My urls.py:
path('', views.index),
My html:
{% for item in categories.all %}
{{ item.name }}
{{ item.age }}
</br>
{% endfor %}
Upvotes: 1
Views: 367
Reputation: 152
class Department(models.Model):
name = models.CharField(max_length=150)
def __str__(self):
return self.name
class Employee(models.Model):
name = models.CharField(max_length=200)
age = models.CharField(max_length=200)
department = models.ForeignKey(Department, on_delete=models.CASCADE, related_name='employees')
def __str__(self):
return self.name
View:
def index(request: HttpRequest) -> HttpResponse:
context = {
'departments': Department.objects.all()
}
return render(request, 'index.html', context)
HTML:
{% for dep in departments %}
<h2>{{ dep.name }}</h2>
{% for emp in dep.employees.all %}
<p>{{ emp.name }}</p>
{% endfor %}
{% endfor %}
Upvotes: 1
Reputation: 41
you can try this:
{% for item in categories.all %}
{{ item.name }}
{{ item.age }}
{{ item.department.name }}
</br>
{% endfor %}
Upvotes: 0