Xadmin 样式实现

一、show_list

service\Xadmin组件

def list_view(self, request):
    # print(request.path)     # /Xadmin/app02/food/
    # print(self.model)   # <class 'app02.models.Food'>
    # 表身
    data_list = self.model.objects.all()
    new_data_list = []
    for obj in data_list:
        temp = []
        for field in self.list_display:     # ["title", 'price'] ["title", 'price', edit]
            if isinstance(field, str):
                value = getattr(obj, field)
            else:
                value = field(self, obj)
            temp.append(value)
        new_data_list.append(temp)
    # new_data_list = [
    #     ['python', 45],
    #     ['go', 45]
    # ]
    # 表头
    head_list = []
    for filed in self.list_display:
        if isinstance(filed, str):
            if filed == "__str__":
                head_name = self.model._meta.model_name.capitalize()
            else:
                filed_obj = self.model._meta.get_field(filed)
                head_name = filed_obj.verbose_name
        else:
             head_name = filed(self, is_flag=True)
        head_list.append(head_name)
    return render(request,
                  "list_view.html",
                  {
                      "data_list": new_data_list,
                      "head_list": head_list
                  }
                  )

app中的Xadmin

class BookConfig(ModelXadmin):

    # 添加 href 用obj ,my_edit 方法在 样式类ModelXadmin被使用
    def my_edit(self, obj=None, is_flag=False):
        if is_flag:
            return "编辑操作"
        return mark_safe('<a href="%s/change/">编辑</a>' % obj.pk)

    def my_delete(self, obj=None, is_flag=False):
        if is_flag:
            return "删除操作"
        return mark_safe('<a href="%s/delete/">删除</a>'% obj.pk)

    def my_check(self, obj=None, is_flag=False):
        if is_flag:
            return "选择"
        return mark_safe('<input type="checkbox">')

    list_display = [my_check, "title", 'price', my_edit, my_delete]
    # list_display = ["title", 'price']


site.register(Book, BookConfig)

3、对应的模板

<table class="table table-striped table-bordered">
    <thead>
        <tr>
            {% for head in head_list %}
                <th>{{ head }}</th>
            {% endfor %}

        </tr>
    </thead>
    <tbody>
        {% for data in data_list %}
            <tr>
                {% for i in data %}
                    <td>{{ i }}</td>
                {% endfor %}
            </tr>
        {% endfor %}
    </tbody>
</table>

 

转载于:https://www.cnblogs.com/wt7018/p/11375006.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值