自定义的Xadmin,并且添加额外的url

Posted fangsheng

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了自定义的Xadmin,并且添加额外的url相关的知识,希望对你有一定的参考价值。

    # 自定义多对多的显示
    def display_customer(self,obj=None,is_field=False):
        if is_field:
            return "课程"
        else:
            ret = obj.course.all()
            temp=[]
            for course_obj in ret:
                s="<a style=‘border:1px solid #369;padding:3px 6px‘ href=‘/Xadmin/crm/customer/cancel/%s/%s‘>%s</a>&nbsp;"%(obj.pk,course_obj.pk,course_obj.name)
                temp.append(s)
            return mark_safe("".join(temp))
    # 自定义url所对应的方法
    def cansel_course(self,request,customer_id,course_id):
        print(customer_id,course_id)
        customer = self.model.objects.filter(pk=customer_id).first()
        customer.course.remove(course_id)
        return redirect(self.get_list_url())
    # 自定义url
    def extra_url(self):
        temp=[]
        temp.append(url(r"^cancel/(d+)/(d+)",self.cansel_course))
        return temp
     list_display = [display_customer]

 

    # 额外的url
    def extra_url(self):
        return []
    def get_url2(self):
        app_name   = self.model._meta.app_label
        model_name = self.model._meta.model_name
        temp=[]
        temp.append(url(r"^$", self.list_view,name="%s_%s_list"%(app_name,model_name)))
        temp.append(url(r"^add/$", self.add_view,name="%s_%s_add"%(app_name,model_name)))
        temp.append(url(r"^(d+)/change/$", self.change_view,name="%s_%s_change"%(app_name,model_name)))
        temp.append(url(r"^(d+)/delete/$", self.delete_view,name="%s_%s_delete"%(app_name,model_name)))

        temp.extend(self.extra_url())
        return temp

点击课程标签,去除该课程:

技术分享图片

 

以上是关于自定义的Xadmin,并且添加额外的url的主要内容,如果未能解决你的问题,请参考以下文章

django-xadmin自定义widget插件(自定义详情页字段的显示样式)

xadmin 自定义模板

VSCode自定义代码片段3——url大全

VSCode自定义代码片段3——url大全

VSCode自定义代码片段3——url大全

xadmin 添加自定义权限