Django:筛选一个模型记录以显示其他模型的所有记录

问题描述 投票:0回答:1

我正在尝试从模型主题中筛选所有主题,然后从我的其他模型评估(也就是一个模型)中显示该主题中的所有评估。

因此,当我单击从我的主题模型中获取的主题时,我希望获得该主题内该员工的所有评估。我认为每个主题都是按钮或锚定标签,单击它们可显示该主题内的评估。

主题模型

class Subject(models.Model):
   id = models.AutoField(primary_key=True)
   subjectname = models.CharField(max_length=255, help_text="Indtast navnet på faget.")
   slug = models.SlugField(max_length=200, unique=True)

评估模型

class Evaluation(models.Model):
   id = models.AutoField(primary_key=True)
   employee_num = models.ForeignKey('Employee', on_delete=models.CASCADE, null=True)
   subjectname = models.ForeignKey('Subject', on_delete=models.CASCADE, null=True)

[员工模型

class Employee(models.Model):
   id = models.AutoField(primary_key=True)
   slug = models.SlugField(max_length=200)
   employee_num = models.IntegerField(help_text="Indtast medarbejderens MA-nummer. (F.eks 123456)")
   firstname = models.CharField(max_length=30, help_text="Indtast medarbejderens fornavn.")
   lastname = models.CharField(max_length=30, help_text="Indtast medarbejderens efternavn.")
   subjectname = models.ForeignKey('Subject', on_delete=models.CASCADE, null=True)

[员工主题视图

class EmployeeDetailView(DetailView):
    template_name = 'evalsys/employee/alle_employees_eval.html'
    model = Employee

    # Uses employee PK to make a detail view
    def view_employee_with_pk(self, pk=None):
        if pk:
            employee = Employee.objects.get(pk=pk)
        else:
            employee = self.employee
        args = {'employee': employee, }
        return render(self, 'evalsys/employee/alle_employees_eval.html', args)

    def get_context_data(self, **kwargs):
        context = super(EmployeeDetailViewDetailView, self).get_context_data(**kwargs)
        context['evaluation'] = Evaluering.objects.all()
        context['subject_list'] = Subject.objects.all()
        context['eval_list'] = Evaluering.objects.all().filter(ma=self.object)
        return context

模板

所以在我的模板中,我会得到类似的东西:

{% for subject in subject_list %}
    <a href="">{{ subject.subjectname }}</a>
{% endfor %}

从那时起,我真的不知道如何过滤内容。希望有道理,我翻译了代码中不相关的信息,并从中切出了信息,所以请问是否有没有道理。

django django-models django-templates django-queryset django-filter
1个回答
0
投票

您可以通过执行以下操作来获取与模板中的主题相关的评估:

{% for subject in subject_list %}
    <a href="">{{ subject.subjectname }}</a>
    {% for evaluation in subject.evaluation_set.all %}
        <span>{{ evaluation }}</span>
    {% endfor %}
{% endfor %}

您可以对任何其他外键执行类似的操作。

© www.soinside.com 2019 - 2024. All rights reserved.