【问题标题】:Display the items related to a foreign key显示与外键相关的项目
【发布时间】:2021-07-13 19:22:20
【问题描述】:

我想要的是在这里显示员工的姓名和年龄及其部门。 对于像部门标题和员工姓名和年龄列表

EG:
部门名称1

姓名1 年龄1
姓名2 年龄2

(部门名称2)

姓名3 年龄3

我是 django 的新手,我使用的是一对多键,但我不知道在我的视图和 url/html 中我该怎么做。

我的模型.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

我的意见.py:

def index(request: HttpRequest) -> HttpResponse:
context = {
    'categories': Employee.objects.all()
}
return render(request, 'index.html', context)

我的 urls.py:

path('', views.index),

我的html:

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

【问题讨论】:

    标签: django django-models django-views


    【解决方案1】:
    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
    

    查看:

    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 %}
    

    【讨论】:

      【解决方案2】:

      你可以试试这个:

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

      【讨论】:

      • 这会创建一个新的部门名称标题来显示每个年龄.. 我想要的是如果有 2 个或更多员工姓名与之相关.. 它显示在 1 个单个标题中。 :(
      猜你喜欢
      • 2012-09-25
      • 2022-01-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多