在Django项目显示从views.py表
<table class="table">
<thead>
<tr>
<th>School</th>
<th>Strength</th>
<th>Average</th>
</tr>
</thead>
<tbody>
{% for school in cluster.school_set.all %}
<tr>
<td><a href="{% url 'data:school_detail' state.id region.id cluster.id school.id %}">{{ school.school_name }}</a></td>
<td>{{ school.strength }}</td>
<td>school average</td>
</tr>
{% endfor %}
</tbody>
</table>
这是在我的模板中的表,它表明在群集中的所有学校的详细信息(市/镇)以表格形式:1)学校名称列2)学校力量3)学校平均分数从一定数量的考试。 我可以很容易地得到列的数据1)学校名称& 2)学校的实力,因为他们只是上课的领域。问题在于列平均值。为了获得平均水平,我需要有一些我无法直接在模板中完成的代码。问题是我不知道如何在views.py中做到这一点。来计算,我需要school.id,但从URL我只得到cluster.id 在这些情况下,你不能简单地从views.py中获取数据,而不从模板中给出值怎么办?在Django项目显示从views.py表
set = Average.objects.filter(school=school.id):
obj = set.latest('average_date')
avg = obj.average_value
这些是我需要得到一个特定学校的平均代码行。
class School(models.Model):
state = models.ForeignKey(State, on_delete=models.CASCADE)
region = ChainedForeignKey(Region, chained_field="state",chained_model_field="state", show_all=False, auto_choose=True, sort=False, on_delete=models.CASCADE)
cluster = ChainedForeignKey(Cluster, chained_field="region",chained_model_field="region", show_all=False, auto_choose=True, sort=False, on_delete=models.CASCADE)
school_name = models.CharField(max_length=250)
facilitator = models.CharField(max_length=250)
f_number = models.IntegerField()
f_email = models.EmailField()
school_logo = models.FileField(default='')
strength = models.IntegerField()
def __str__(self):
return self.school_name
class Avergae(models.Model):
state = models.ForeignKey(State, on_delete=models.CASCADE)
region = ChainedForeignKey(Region, chained_field="state",chained_model_field="state", show_all=False, auto_choose=True, sort=False, on_delete=models.CASCADE)
cluster = ChainedForeignKey(Cluster, chained_field="region",chained_model_field="region", show_all=False, auto_choose=True, sort=False, on_delete=models.CASCADE)
school = ChainedForeignKey(School, chained_field="cluster",chained_model_field="cluster", show_all=False, auto_choose=True, sort=False, on_delete=models.CASCADE)
average_date = models.DateField()
average_value = models.DecimalField(max_digits=4, decimal_places=2)
average_attendance = models.IntegerField()
average_note = models.CharField(max_length=250)
def __str__(self):
return '{}: {}'.format(self.average_date, self.average_value)
这些都是我的模特学校和平均
在你School
模型,你可以写一个方法get_average
:
class School(models.Model):
# other fields
def get_average(self):
return self.avergae_set.latest('average_date').average_value
然后在模板你可以这样做:
{{ school.get_average }}
注意:您的平均型号拼写错误,您有Avergae
而应该是Average
学校对象没有属性average_set是我得到的错误。 –
请再次复制代码,我首先使用'average'代替'avergae',但后来意识到您的拼写错误。所以它应该是基于你的代码的'avergae_set'。 –
这是我想要的最后一件事。我的不好:p Thanq兄弟我一直坚持这个很长一段时间了。 –
您可以在'school'模型中创建方法或创建django自定义过滤器,请显示您的'Average'计算示例和学校模型,请 –
是的,发布模型和视图。 – MadPhysicist
我刚更新了问题请看看 –