user16433145
user16433145

Reputation:

Display the items related to a foreign key

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

Answers (2)

beasyx
beasyx

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

Mayank Gupta
Mayank Gupta

Reputation: 41

you can try this:

{% for item in categories.all %}
    {{ item.name }}
    {{ item.age }}
    {{ item.department.name }}
    </br>
{% endfor %}

Upvotes: 0

Related Questions