Django ModelForm 中选择框的数据 以及 instance 参数

ModelForm 中选择框的数据

print(list(self.fields['customer'].choices)) 
# [('', '---------'), (1, '张飞'), (2, '关羽'), (3, '刘备')]
print(list(self.fields['customer'].widget.choices)) 
# [('', '---------'), (1, '张飞'), (2, '关羽'), (3, '刘备')]

# 修改数据限制显示的内容

# 修改之前的 customer字段的 选项列表
choices_list = [(i.pk, str(i)) for i in self.instance.consultant.customers.all()]
choices_list.insert(0, ('', '---------'))
self.fields['customer'].choices = choices_list

# 修改之前的 consultant 字段的 选项列表
self.fields['consultant'].choices = [(self.instance.consultant.pk,self.instance.consultant.name)]

在内存中创建 包含销售对象的 consultRecord 对象 数据库中没有改数据

# request.user_object 为 中间建中创建的个人对象
obj = models.ConsultRecord(consultant=request.user_object) 
obj.save()  #  新增数据到数据库中

# 通过 instance 传给 ModelForm 对象

instance 参数

# 创建 和 修改  客户的方法
def customer_edit(request, pk=None):
    ''' 创建 和 修改  客户的方法  '''
    # 通过分组 参数 的 id 获取 要修改的对象
    cus_obj = models.Customer.objects.filter(pk=pk).first()
    # 把要修改 的对象通过 instance 传入form组件中   必须为本类的对象
    form_obj = CustomerForm(instance=cus_obj)
    if request.method == 'POST':
        form_obj = CustomerForm(request.POST, instance=cus_obj)
        if form_obj.is_valid():
            # 如果 instance 有对象则是修改数据 没有就是 新增数据
            form_obj.save()
            # 获取到跳转过来的路径 如果有就重定向到此路径
            # return_url = request.GET.get('return_url')
            # if return_url:
            #     return redirect(reverse_url(request, return_url=return_url))

            return redirect(rev_url(request, 'show:public_customer'))

    return render(request, "form_edit.html", {'form_obj': form_obj, 'title': "修改用户" if cus_obj else '添加用户'})

转载于:https://www.cnblogs.com/zhang-zi-yi/p/10187779.html

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值