Django - 在admin-site中添加摘要表

时间:2017-04-02 12:49:10

标签: python django python-3.x

我想要实现的是在一列上有一个关联列表,在另一列上有一个总成员,如下所示:

enter image description here

我试图在这里寻找其他解决方案但没有运气,我有什么遗失?

仍然是新手,所以感谢你的帮助和指导,伙计们!

models.py

class Member(models.Model):
   member_no = models.AutoField(primary_key=True)
   association = models.ForeignKey('Association')
   ...


class Association(models.Model):
   asoc_name = models.CharField(max_length=50, null=True, blank=True)

   class Meta:
      db_table = 'Association'

    def __str__(self):
       return self.asoc_name

    def __unicode__(self):
       return self.asoc_name


 class AssociationSummary(Association):
    class Meta:
       proxy = True
       verbose_name = 'Association Summary'
       verbose_name_plural = 'Association Summary'

admin.py

@admin.register(AssociationSummary)
class ChartAssociationAdmin(admin.ModelAdmin):
   change_list_template = 'admin/chart_association.html'


   def get_total(self):
       total = Member.objects.all().aggregate(association=Sum('member_no'))
       return total

   def changelist_view(self, request, extra_context=None):
       my_context = {
           'member_no': self.get_total(),
       }
       return super(ChartAssociationAdmin, self).changelist_view(request,
                                                     extra_context=my_context)

chart_association.html

{% extends 'admin/change_list.html' %}

{% block content_title %}
   <h1> Association Summary </h1>
{% endblock %}

{% block result_list %}
<div class=”results”>
<table>

<thead>
  <tr>
    <th>
      <div class=”text”>
        <span>Association</span>
      </div>
    </th>
    <th>
      <div class=”text”>
        <span>Total Members</span>
      </div>
    </th>
  </tr>
</thead>
<tbody>
  {% for row in member %}
  <tr class="{% cycle 'row1' 'row2' %}">
    <td> {{ row.asoc_name }} </td>
    <td> {{ row.total }} </td>
  </tr>
  {% endfor %}
</tbody>

</table>
</div>


{% endblock %}

{% block pagination %}{% endblock %}

0 个答案:

没有答案