权限组件

实例方法和函数的区别

class Person(object):
      def __init__(self,name)
           self.name=name
      def speak(self):
print(self)
# 实例方法 la
=Person("la") la.eat() # 为什么不需要传参数,这是因为self把调用他的对象当成了参数
结果是:
la

# 函数调用则必须穿参数,否则会报错
Person.speak(123) # 此时self就等同于123
结果是:
123

 而在list_display当中,视图是直接调用的,因此需要传参数

在注册时定义:
class ArtileConfig(Xadmin.ModelXadmin):
    def add_0(self,obj=None,header=False):
        if header:
            return "操作"
        else:
            url=reverse(self.model._meta.model_name+"_add")
            return  mark_safe("<a href='%s'>添加</a>"%url)
   
    list_display=[checkbox,"title","up_count","down_count",add_0]

在另外一个py文件中调用,因此需要自己传参数




在Xadmin中调用:
def test(self, request, *args): data_list=self.model.objects.all() # 返回的是queryset列表 items_list=[] title_list=[] for field in self.list_display: if isinstance(field, str): title_list.append(self.model._meta.get_field(field).verbose_name) # 求字段名 else: # if callable(field) 判断是不是函数 # 函数怎么命名 title_list.append(field(self,header=True)) for obj in data_list: item=[] for field in self.list_display: #["title","desc",add_0] if isinstance(field,str): # 求字段名 item.append(getattr(obj,field)) # 当是多对多的关系时,这个也可以的 else: item.append(field(self,obj)) items_list.append(item) return render(request, "XXadmin/XXadmin_check.html",{"items_list":items_list,"title_list":title_list})

url分发缺陷,用表名当做反向解析,会出现重复,在不同的app中,可能会有同名的表

@property
    def url(self):                     # self指调用他的对象,也就是site调用
        table_name = self.model._meta.model_name
        app_name = self.model._meta.app_label
        url = []
        url.append(re_path('^add/$',self.test,name=table_name+"_add"))
        url.append(re_path('^delete/(d+)',self.test,name=table_name+"_delete")) 
        url.append(re_path('^update/(d+)',self.test,name=table_name+"_update"))
        url.append(re_path('^check/(d+)',self.test,name=table_name+"_check"))
        url.append(re_path('^$',self.test,name=table_name+"_home"))
        return url,None,None        # [re_path('^delete/(d+)',test),],None,None

因此可以加上app的名字,相当于加上了namespace,这样重复的概率就会很低

如何展示不同的表,  把数据放在

原文地址:https://www.cnblogs.com/AbnerLc/p/11186604.html