如何在Django模板中使用if条件消除重复数据? [英] How to eliminate duplicate data using if condition in django template?

查看:61
本文介绍了如何在Django模板中使用if条件消除重复数据?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

是否可以使用模板或html中的条件来消除重复数据?

注意:我的视图中已经有不同的核心,但是由于我在 1<tr> ,它会复制一些数据.

这是我的html

  {%for cores in cores%}{%为行为中的行为%}{%如果core.Grading_Behavior__Grading_Behavior__Name ==行为.Grading_Behavior__Grading_Behavior__Name%}< tr>< td rowspan ="2" colspan ="4" class ="tblcoretitle"> {{core.Grading_Behavior__Grading_Behavior__Name}} 1 1</td>{%如果core.Grading_Behavior__Grading_Behavior__GroupName ==行为.Grading_Behavior__Grading_Behavior__GroupName%}< td colspan ="4" class ="tblcore">{{behavior.Grading_Behavior__Grading_Behavior__GroupName}}</td>{% 别的 %}{% 万一 %}< td class ="tblcore"> 1</td>< td class ="tblcore"> 2</td>< td class ="tblcore"> 3</td>< td class ="tblcore"> 4</td></tr>< tr>{%如果core.Grading_Behavior__Grading_Behavior__GroupName ==行为.Grading_Behavior__Grading_Behavior__GroupName%}{% 别的 %}< td colspan ="4" class ="tblcore"> {{behavior.Grading_Behavior__Grading_Behavior__GroupName}}</td>{% 万一 %}</tr>{% 万一 %}{%endfor%}{%endfor%} 

这是我的views.py

  cores = StudentsBehaviorGrades.objects.filter(Teacher = teacher)\.filter(Students_Enrollment_Records__in = Students.values_list('id')).values('Grading_Behavior__Grading_Behavior__Name','Grading_Behavior__Grading_Behavior__GroupName').distinct('Grading_Behavior__Grading_Bone.order_by('Grading_Behavior__Grading_Behavior__Name')行为= StudentsBehaviorGrades.objects.filter(Teacher = teacher)\.filter(Students_Enrollment_Records__in = Students.values_list('id')).filter().values('Grading_Behavior__Grading_Behavior__Name','Grading_Behavior__Grading_Behavior__GroupName').distinct('Grading_Behavior ___.order_by('Grading_Behavior__Grading_Behavior__GroupName') 

这是我目前的结果

这是我想要的结果

伙伴,如果您有更好的解决方案或想法,请分享您的答案.

更新

当我在视图中尝试这样做时,

  cores = StudentsBehaviorGrades.objects.filter(Teacher = teacher)\.filter(Students_Enrollment_Records__in = Students.values_list('id')).values('Grading_Behavior__Grading_Behavior__Name','Grading_Behavior__Grading_Behavior__GroupName').distinct('Grading_Behavior__Grading_Behavior__Name')\.order_by('Grading_Behavior__Grading_Behavior__Name')行为= StudentsBehaviorGrades.objects.filter(Teacher = teacher)\.filter(Students_Enrollment_Records__in = Students.values_list('id')).values('Grading_Behavior__Grading_Behavior__Name','Grading_Behavior__Grading_Behavior__GroupName').distinct('Grading_Behavior__Grading_Behavior__GroupName')\.order_by('Grading_Behavior__Grading_Behavior__GroupName')匹配= cores.union(行为) 

我的html

  {%匹配项中匹配项%}< tr>< td rowspan ="2" colspan ="4" class ="tblcoretitle"> {{match.Grading_Behavior__Grading_Behavior__Name}} 1</td></tr>< tr>< td colspan ="4" class ="tblcore"> {{match.Grading_Behavior__Grading_Behavior__GroupName}}</td>< td class ="tblcore"> 1</td>< td class ="tblcore"> 2</td>< td class ="tblcore"> 3</td>< td class ="tblcore"> 4</td></tr>{%endfor%} 

这是结果:

它重复了核心值

将要解决此配合,需要更多调整.预先谢谢你.

再次

更新

当我使用

  matches = itertools.chain(核心,行为) 

结果是

解决方案

由于您在同一个对象中使用了两个过滤器,为什么不合并它们以避免重复并在模板中使用两个for循环.

>

 导入itertools核心= StudentsBehaviorGrades.objects.filter(Teacher = teacher)\.filter(Students_Enrollment_Records__in = Students.values_list('id')).values('Grading_Behavior__Grading_Behavior__Name','Grading_Behavior__Grading_Behavior__GroupName').distinct('Grading_Behavior__Grading_Bone.order_by('Grading_Behavior__Grading_Behavior__Name')行为= StudentsBehaviorGrades.objects.filter(Teacher = teacher)\.filter(Students_Enrollment_Records__in = Students.values_list('id')).values('Grading_Behavior__Grading_Behavior__Name','Grading_Behavior__Grading_Behavior__GroupName').distinct('Grading_Behavior__GroupingName.order_by('Grading_Behavior__Grading_Behavior__GroupName')匹配= itertools.chain(核心,行为) 

Is it okay to use if condition in template or html to eliminate duplicate data?

Note: I have already distinct cores in my views but since i have 2 loops in 1 < tr > it duplicates some data.

this is my html

{% for core in cores %}
    {% for behavior in behaviors %}
        {% if core.Grading_Behavior__Grading_Behavior__Name == behavior.Grading_Behavior__Grading_Behavior__Name %}
            <tr>
                <td rowspan="2" colspan="4" class="tblcoretitle">{{core.Grading_Behavior__Grading_Behavior__Name}} 1</td>
                {% if core.Grading_Behavior__Grading_Behavior__GroupName == behavior.Grading_Behavior__Grading_Behavior__GroupName  %}
                    <td colspan="4" class="tblcore"> {{behavior.Grading_Behavior__Grading_Behavior__GroupName}}
                    </td>
                {% else %}
                {% endif %}
                <td class="tblcore">1</td>
                <td class="tblcore">2</td>
                <td class="tblcore">3</td>
                <td class="tblcore">4</td>
            </tr>
            <tr>
                {% if core.Grading_Behavior__Grading_Behavior__GroupName == behavior.Grading_Behavior__Grading_Behavior__GroupName  %}
                {% else %}
                    <td colspan="4" class="tblcore">{{behavior.Grading_Behavior__Grading_Behavior__GroupName}}
                    </td>
                {% endif %}
            </tr>
        {% endif %}
    {% endfor %}
{% endfor %}

this is my views.py

cores = StudentsBehaviorGrades.objects.filter(Teacher=teacher) \
        .filter(Students_Enrollment_Records__in=Students.values_list('id')).values('Grading_Behavior__Grading_Behavior__Name','Grading_Behavior__Grading_Behavior__GroupName').distinct('Grading_Behavior__Grading_Behavior__Name')\
    .order_by('Grading_Behavior__Grading_Behavior__Name')


behaviors = StudentsBehaviorGrades.objects.filter(Teacher=teacher) \
        .filter(Students_Enrollment_Records__in=Students.values_list('id')).filter().values('Grading_Behavior__Grading_Behavior__Name','Grading_Behavior__Grading_Behavior__GroupName').distinct('Grading_Behavior__Grading_Behavior__GroupName')\
    .order_by('Grading_Behavior__Grading_Behavior__GroupName')

this is my current result

this is i want result

mate if you have a better solution or idea please share your answer.

UPDATE

when i tried this in views,

cores = StudentsBehaviorGrades.objects.filter(Teacher=teacher) \
        .filter(Students_Enrollment_Records__in=Students.values_list('id')).values(
        'Grading_Behavior__Grading_Behavior__Name', 'Grading_Behavior__Grading_Behavior__GroupName').distinct(
        'Grading_Behavior__Grading_Behavior__Name') \
        .order_by('Grading_Behavior__Grading_Behavior__Name')

    behaviors = StudentsBehaviorGrades.objects.filter(Teacher=teacher) \
        .filter(Students_Enrollment_Records__in=Students.values_list('id')).values(
        'Grading_Behavior__Grading_Behavior__Name', 'Grading_Behavior__Grading_Behavior__GroupName').distinct(
        'Grading_Behavior__Grading_Behavior__GroupName') \
        .order_by('Grading_Behavior__Grading_Behavior__GroupName')

    matches = cores.union(behaviors)

my html

    {% for match in matches %}
        <tr>
            <td rowspan="2" colspan="4" class="tblcoretitle">{{match.Grading_Behavior__Grading_Behavior__Name}} 1</td>
        </tr>
        <tr>
            <td colspan="4" class="tblcore">{{match.Grading_Behavior__Grading_Behavior__GroupName}}</td>
            <td class="tblcore">1</td>
            <td class="tblcore">2</td>
            <td class="tblcore">3</td>
            <td class="tblcore">4</td>
        </tr>
    {% endfor %}

this is the result:

it duplicate the Core values

Were about to solve this mate, a little more adjustment. thank you in advance.

UPDATE again

when i use

matches = itertools.chain(cores, behaviors)

the result is

解决方案

Since you're using two filterings in the same object, why not merge them in order to avoid duplication and using two for-loop in your template.

import itertools

cores = StudentsBehaviorGrades.objects.filter(Teacher=teacher) \
            .filter(Students_Enrollment_Records__in=Students.values_list('id')).values('Grading_Behavior__Grading_Behavior__Name','Grading_Behavior__Grading_Behavior__GroupName').distinct('Grading_Behavior__Grading_Behavior__Name')\
        .order_by('Grading_Behavior__Grading_Behavior__Name')


behaviors = StudentsBehaviorGrades.objects.filter(Teacher=teacher) \
            .filter(Students_Enrollment_Records__in=Students.values_list('id')).values('Grading_Behavior__Grading_Behavior__Name','Grading_Behavior__Grading_Behavior__GroupName').distinct('Grading_Behavior__Grading_Behavior__GroupName')\
        .order_by('Grading_Behavior__Grading_Behavior__GroupName')

matches = itertools.chain(cores, behaviors)

这篇关于如何在Django模板中使用if条件消除重复数据?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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