• django 项目 处理分页返回的问题、跟进和报名


    分页的问题:
    处理思路:
    获取到跳转前的页面的url和url后的数据
    url = request.path_info
    param = request.GET.copy()
    装入到querydict中:
    qd = QueryDict()
    qd._mutable = True
    字典进行赋值:
    qd['next'] = url
    qd['_query'] = param.urlencode()
    转化为&连接的方式
    query = qd.urlencode()
    进行跳转:1,增加页面,url后的内容
    add_btn = mark_safe(
            '<a href="{0}?{1}" class="btn btn-sm btn-primary">增加</a>'.format(reverse('add_client'),query)
    )
    返回:add_btn query
    返回给查看的页面:
    add_btn,query = self.get_btn_add(request)
    'add_btn':add_btn,
    'query':query,
    在跳转的页面获取到
    add_btn query
    进行跳转:
    return redirect('{}?{}'.format(next_url,query))
    跟进:
    生成一个ConsultRecord对象,没有放在数据库
    obj = models.ConsultRecord(consultant=request.user)
    在做字段筛选的时候
    class  ConsultForm(BaseForm):
        def __init__(self, *args, **kwargs):
            super().__init__(*args, **kwargs)
            self.fields['customer'].widget.choices = [(i.id,i) for i in self.instance.consultant.customers.all()]
            self.fields['consultant'].widget.choices = [(self.instance.consultant.id,self.instance.consultant)]
     
        class Meta:
            model = models.ConsultRecord
            fields = '__all__'
            exclude = ['delete_status']
    在init 下进行字段的筛选,进行form时选择字段使用choices方法进行筛选
    修改时的方式:
    customer_obj = enroll_obj.customer
    customer_obj.status = 'signed'
    customer_obj.save()
    函数的复用和选择:
    class ConsultRecordList(View):
     
        def get(self,request,customer_id):
            if customer_id == '0':  这里执行判断来区分是所有和个人的
                all_consult_records = models.ConsultRecord.objects.filter(consultant=request.user)   筛选user的
            else:
                all_consult_records = models.ConsultRecord.objects.filter(consultant=request.user,customer_id = customer_id)  筛选user的和指定的id
            return render(request,'consult_record_list.html',{'all_consult_records':all_consult_records})
     
    def consult_record(request,edit_id = None):
        obj = models.ConsultRecord.objects.filter(id=edit_id).first() or models.ConsultRecord(consultant=request.user)   or的执行前者为None执行后边的
        form_obj = ConsultForm(instance=obj)
        if request.method == 'POST':
            form_obj = ConsultForm(request.POST,instance=obj)
            if form_obj.is_valid():
                form_obj.save()
                return redirect(reverse('consult_record_list'))
        return render(request, 'consult_record.html', {"form_obj": form_obj})
     
    在modes中自定义进行判断:
    def enroll_link(self):
        if self.enrollment_set.all():  用反向查找来进行
            return format_html('<a href="{}">查看报名表</a>'.format(reverse('enrollment_list', args=(self.id,))))
        else:
            return format_html('<a href="{}">报名地址</a>'.format(reverse('add_enrollment', args=(self.id,))))
     

  • 相关阅读:
    知识图谱应急安全场景应用规划
    DataxWeb 设置运行错误
    Datax mysql 8.x elasticsearch 7.x 测试成功json样例
    testmysqltoelasticsearch76.json 未测试,仅参考
    testmysqltoelasticsearch75.json 未测试,仅参考
    testorcletoelasticsearch73.json 微测试,仅参考
    testmysqltoelasticsearch74.json 未测试,仅参考
    testmysqltoelasticsearch72.json 微测试,仅参考
    go可变参数
    Java 8 终于支持 Docker !
  • 原文地址:https://www.cnblogs.com/lnrick/p/9754151.html
Copyright © 2020-2023  润新知