学这个我是从后面的项目教学开始学的,这部分是昨天学的今天记录下,之前学的也要慢慢的补齐来了
一、展示qq、name、sourcec、consult 这些字段
前端代码:
后端传过来admin_class类 #CustomerAdmin
<thead> <tr> {% for column in admin_class.list_display %} <th>{{column}}</th> {% endfor %} </tr> </thead>
二、展示下面的内容
前端代码:as 用一个变量接收自定义表签里面函数返回的值
通过自定义标签tag.py里面定义个函数get_query_sets,他是返回了model里面的数据,然后在利用build_table_raw
函数去build_table_raw里根据obj去找字段对应的值
<tbody> {% get_query_sets admin_class as query_sets %} {% for obj in query_sets %} <tr> {% build_table_raw obj admin_class %} </tr> {% endfor %} </tbody>
tags.py文件代码:
@register.simple_tag def get_query_sets(admin_class): """ :param admin_class: CustomerFollowUpAdmin :return: 返回表里的所有数据 """ return admin_class.model.objects.all() @register.simple_tag def build_table_raw(obj,admin_class): """ :param obj: admin_class.model.objects.all() :param admin_class: CustomerAdmin :return:对应字段的值 """ raw_ele = "" for column in admin_class.list_display: #获取该类内指定字段的信息 field_obj = obj._meta.get_field(column) if field_obj.choices: #获取字段choices里的中文值 column_data = getattr(obj,"get_%s_display" %column)() else: column_data = getattr(obj,column) raw_ele+="<td>%s</td>" %column_data return mark_safe(raw_ele)
嗯这个思路目前写得不是很好
一条薛定谔的咸鱼