具有重复字段的行的Django“列表”和“详细信息”视图

时间:2019-02-20 09:51:15

标签: django django-templates django-views

重复的字段行!字段字段重复!

因此,我有一个模型Application,其中的字段school_name可以采用其他字段中的重复值。 我期望实现的是:所有重复school name值及其各自计数的“ 列表 ”视图和一个“ 详细信息” ”视图中的每个重复字段,当我在“列表”视图(或类似的视图)中单击某行时,便可以查看包含以下内容的所有行此重复字段,以及该特定条目的其余字段。

这是什么意思

列出行。 Rows listed

然后,当我单击第1行(Dedan Kimathi University of Technology)或单击第1行的详细信息按钮或类似的按钮时,我希望得到此信息:

Row Details

到目前为止,我有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上进行此操作。

1 个答案:

答案 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 %}

像魅力一样工作。