在模板中呈现外键列表 [英] Render a list of foreign key in template

查看:74
本文介绍了在模板中呈现外键列表的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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)



视图



Views

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)



模板



Template

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

</div>

该Web应用程序具有登录功能。部门负责人可以标记出席情况。我想在相应的已登录HOD下呈现员工列表并标记出勤。我想以相同的观点来做。

The webapp has a login feature. The headofdepartment can mark the attendance . I want to render a list of employees under the respective logged in HOD and mark attendance . I want to do this in the same view .

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

I am unable to render the employees for logged in HOD.

推荐答案

我找到了解决方案,我写的视图不正确。

I found the solution , I wrote views incorrectly.

    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



模板



Template


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

这篇关于在模板中呈现外键列表的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆