1.分页器

分页器相关知识点,请查看以下链接

https://www.cnblogs.com/gbq-dog/p/10724859.html

2.代码归类

归类前代码

header_list = []  # 定制一个空别表
        for field_or_func in self.get_new_list_display():
            # 如果是多对多的
            if callable(field_or_func):
                val = field_or_func(self, header=True)
                header_list.append(val)
                # header_list.append(field_or_func.__name__)
            # 如果是普通属性
            else:

                if field_or_func == "__str__":
                    val = self.model._meta.model_name.upper()
                else:
                    field_obj = self.model._meta.get_field(field_or_func)
                    val = field_obj.verbose_name  # 自定义属性名

                header_list.append(val)

        # 构建展示数据
        new_data = []
        for obj in queryset:
            temp = []
            for field_or_func in self.get_new_list_display():
                if callable(field_or_func):
                    val = field_or_func(self, obj)  # 获取函数返回值,传入obj进行从操作数据

                elif not field_or_func == "__str__":
                    from django.db.models.fields.related import ManyToManyField
                    field_obj = self.model._meta.get_field(field_or_func)  # 获取模型对象
                    # 判断是否为多对多属性
                    if type(field_obj) == ManyToManyField:
                        raise Exception("list_display不能是多对多字段!")
                    # 判断是否有选择属性
                    if field_obj.choices:
                        val = getattr(obj, "get_%s_display" % field_or_func)()
                        # 调用这个方法,反射方法,调用方法获取对应的内容
                    else:
                        val = getattr(obj, field_or_func)
                        if field_or_func in self.list_display_links:
                            val = mark_safe("<a href='%s'>%s</a>" % (self.get_change_url(obj), val))

                else:
                    val = getattr(obj, field_or_func)()

                temp.append(val)
                # print(">>>>>>>>>>>>",temp)
            new_data.append(temp)
归类前代码

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-07-16
  • 2022-12-23
  • 2021-11-18
  • 2021-06-01
  • 2021-07-23
猜你喜欢
  • 2022-12-23
  • 2022-01-13
  • 2022-12-23
  • 2021-12-02
  • 2021-07-10
  • 2021-12-26
  • 2021-12-19
相关资源
相似解决方案