【发布时间】:2020-02-04 06:16:37
【问题描述】:
我一直在试图弄清楚如何使用详细视图 PK 过滤我的模板值。我有我的员工的详细视图。我希望显示我的员工的主题,然后我希望使用针对该主题进行的评估来过滤这些主题。
到目前为止,我已经可以显示我的主题名称,并显示每个主题的所有评估。但是,我不想显示所有这些我只想显示当前员工存在的那些(detailView PK)。正如您在我的模板中看到的那样,我使用 _set 来建立关系,但我不知道如何将 PK 过滤到该等式中。
例如,我想要什么:
主题一:
Evaluationname - 员工 Johnny
Evaluationname - 员工 Johnny
例如,我目前拥有的:
主题一:
Evaluationname - 员工 Johnny
Evaluationname - 员工 Chris
我不想要 Chris 的评价,我只想过滤主键,所以在这种情况下是 Johnny 的评价。
模板
{% for subject in subject_list %}
<a href="">{{ subject.subejctname }}</a>
{% for evaluation in subject.evaluation_set.all %}
<div>
<p>{{ evaluering.ma }} | {{ evaluering.ma.firstname }} | {{ evaluering.ma.lastname }}</p>
</div>
{% empty %}
<p>No evaluations founds.</p>
{% endfor %}
{% endfor %}
查看
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['subject_list'] = Subject.objects.all()
return context
主题模型
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)
【问题讨论】:
标签: django django-models django-templates django-views django-queryset