【问题标题】:Render a list of foreign key in template在模板中渲染外键列表
【发布时间】:2025-12-09 06:10:01
【问题描述】:

型号

class Head_of_department(models.Model):
    first_name = models.CharField(max_length=200)
    last_name = models.CharField(max_length=200)
    email = models.CharField(max_length=30)

    def __str__(self):
        return self.first_name 

class Employee(models.Model):
    first_name = models.CharField(max_length=200, unique=True)
    last_name = models.CharField(max_length=200, unique=True)
    head_of_department = models.ForeignKey('Head_of_department', on_delete=models.SET_NULL, blank=True, null=True)
    email = models.EmailField(max_length=100)

     def __str__(self):
        return self.first_name + ' ' + self.last_name

class Attendance(models.Model):
    head_of_department = models.ForeignKey('Head_of_department', on_delete=models.SET_NULL, blank=True, null=True)
    employee = models.ForeignKey('Employee', on_delete=models.CASCADE, )
    attendance = models.CharField(max_length=8, choices=attendance_choices, blank=True)

观看次数

class Attendancecreate(CreateView):
    model = Attendance
    fields = ['employee']
    success_url = '/dashboard/'

    def get_context_data(self,** kwargs):
        context = super(Attendancecreate, self).get_context_data(**kwargs)
        email = self.request.user.email
        hod = Head_of_department.objects.get(email=email)
        context["objects"] = self.model.objects.filter(employee__head_of_department =hod)
        print (context["objects"])
        return context

     def form_valid(self, form):
        self.object = form.save(commit=False)
        self.object.head_of_department = get_object_or_404(Head_of_department, email=self.request.user.email)
        self.object.save()
        return super().form_valid(form)

模板

<div class="form-group">
        {% for item in objects %}
            {{ item.employee }}
        {% endfor %}

</div>

webapp 具有登录功能。系主任可对出席情况进行标记。我想在各自登录的 HOD 下呈现员工列表并标记出勤率。我想在同一个视图中执行此操作。

我无法呈现已登录 HOD 的员工。

【问题讨论】:

  • 您想在模板中显示哪个表格?
  • 现在在模板中,您可以呈现出勤表中的数据,以及所有与 Head_of_department 和 Employee 关联的数据。
  • 我想在一个视图中呈现员工列表并标记出勤。员工名单必须在考勤的创建视图中列出
  • {% for item in objects %} {{ item.employee.first_name }} {% endfor %}
  • 我试过了,没用

标签: python django django-models django-templates


【解决方案1】:

我找到了解决方案,我写错了视图。

    model = Attendance
    fields = ['employee']
    success_url = '/dashboard/'

    def get_context_data(self,** kwargs):
        context = super(Attendancecreate, self).get_context_data(**kwargs)
        email = self.request.user.email
        hod = Head_of_department.objects.get(email=email)
        context["objects"] = Employee.objects.filter(head_of_department =hod)
        print (context["objects"])
        return context

模板


{% for emp in objects %}
            {{ emp.first_name }}  {{ emp.last_name }}
 {% endfor %}

【讨论】: