如何从控制器比较Django中保存的模型数据?

时间:2019-05-27 17:34:56

标签: python html django

我构建了一个由django驱动的web应用程序,在这里我使用了一个名为average CGPA(avg_cgpa)的模型字段,该字段是Django模型中的DecimalField。我还在控制器/模板上使用了for循环来生成有关学生的所有单独数据。现在我的目的是比较模型每一行的avg_cgpa数据以生成新的

标签。每个学生的结果都不一样。 就像,如果avg_cgpa> 2.00,它将通过打印,否则将失败! 正如您在模板上看到的那样,我确实尝试过,但是它不起作用,请提出您有用的答案。

(Django model here)

class Management(models.Model):
    student_id = models.CharField(max_length=100)
    first_name = models.CharField(max_length=200)
    last_name = models.CharField(max_length=200)
    father_name = models.CharField(max_length=200)
    mother_name = models.CharField(max_length=200)
    Present_address = models.TextField(max_length=400)
    Permanent_address = models.TextField(max_length=400)
    contact = models.CharField(max_length=11)
    avg_cgpa = models.DecimalField(max_digits=20,decimal_places=2)

    def __str__(self):
        return self.student_id
(Here is the template)

{% load static %}
{% include 'base.html' %}
{% block content %}
{% include 'navbar.html' %}
{% include 'banner.html' %}


<div class = "container">
    <div class="row">
        {% for x in student %}
        <div class="col-md-4">
            <div class="card" style="width: 18rem;">
                  <div class="card-body">
                    <h5 class="card-title"><strong>ID : </strong> {{ x.student_id }}</h5>
                     <hr class="my-4">
                    <img class="card-img-top" src="{% static "images/hat.png" %}"><hr class="my-4">
                    <h6 class="card-subtitle mb-2 text-muted"><strong><i class="far fa-user-circle"></i> </strong> {{ x.first_name }} {{ x.last_name }}</h6>
                    <hr class="my-4">
                    <p class="card-text">Father's Name : <strong>{{ x.father_name }}</strong></p>
                    <p class="card-text">Mother's Name : <strong>{{ x.mother_name }}</strong></p>
                    <p class="card-text">Address : <strong>{{ x.Permanent_address }}</strong></p>
                   <p class="card-text"><strong><i class="fas fa-phone"></i> {{ x.contact }}</strong> </p>
                   <p class="card-text">Avg CGPA : <strong>{{ x.avg_cgpa }}</strong></p>
                   {% if x.avg_cgpa > "2" %}
                        <p class="card-text">Condition : <strong>Pass</strong></p>
                   {% endif %}
                  </div>
              </div>
              </br>
        </div>
        {% endfor %}
    </br>
</div>

{% include 'footer.html' %}
{% endblock%}

我确实尝试过条件是否在for循环中,但没有结果作为结果。是否可以通过在Django中比较模型数据来检索数据?

1 个答案:

答案 0 :(得分:0)

我会考虑向您的模型添加一个属性,以返回是否通过测试

class Management(models.Model):

   @property
   def passed(self):
       return self.avg_cgpa > 2

然后可以在模板{% if x.passed %}中使用它,也可以将其用于代码的其他部分,并且更具可读性