重复的字段行!字段字段重复!
因此,我有一个模型Application
,其中的字段school_name
可以采用其他字段中的重复值。
我期望实现的是:所有重复school name
值及其各自计数的“ 列表 ”视图和一个“ 详细信息” ”视图中的每个重复字段,当我在“列表”视图(或类似的视图)中单击某行时,便可以查看包含以下内容的所有行此重复字段,以及该特定条目的其余字段。
这是什么意思
然后,当我单击第1行(Dedan Kimathi University of Technology)或单击第1行的详细信息按钮或类似的按钮时,我希望得到此信息:
到目前为止,我有2个查询:
duplicates = Application.objects.values('school_name').annotate(name_count=Count('school_name')).filter(name_count__gt=0)
上面的查询返回重复的行及其计数(如图1所示),而下面的查询,
records = Application.objects.filter(school_name__in=[item['school_name'] for item in duplicates])
返回行的其他字段(如图2所示),只是将所有行都带入数据库中。
我期望的是,当我单击“列表”上的一行时,会得到一个“详细”视图,其中的行具有school_name
字段的重复值。
需要注意的是:我正在views.py
上进行此操作。
答案 0 :(得分:1)
我终于找到了解决自己问题的方法:-) 所以我要做的是在视图中创建一个函数,该函数需要一个额外的参数,然后将该参数传递给URL和模板,如下所示:
views.py
def school_detail(request, school_name):
filtered_records = Application.objects.filter(school_name=school_name)
context = {
'repeated_names' : filtered_records,
'duplicates' : duplicates,
'title' : 'Disbursement Details',
}
return render(request, 'calculations/detail.html', context)
然后在我的urls.py
path('list/<str:school_name>/', default_views.school_detail, name='dup_detail')
最后在我的模板中:
{% for application in duplicates %}
<tr class="clickabe-row" data-target="{% url 'dup_detail' application.school_name %}">
<td>{{ forloop.counter}}</td>
<td>{{ application.school_name}}</td>
<td>{{ application.name_count}}</td>
</tr>
{% endfor %}
像魅力一样工作。