Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django Updateview-基于字段值或用户对象设置参数_Django - Fatal编程技术网

Django Updateview-基于字段值或用户对象设置参数

Django Updateview-基于字段值或用户对象设置参数,django,Django,我有一个Django UpdateView和一个表单。在模板中,我必须显示一个“name”值。如果表单中存在客户id值,则“名称”基于该值。如果为空,则“名称”基于用户对象。 “名称”未保存在模型中,因此必须对其进行计算 看起来很简单,但我无法让它工作。到目前为止,我所尝试的: 尝试在get_context_data()中设置值-不起作用,因为get_context_data是在绑定表单数据之前调用的,因此我无法从表单访问customer_id值 在form类中创建一个方法: def get_n

我有一个Django UpdateView和一个表单。在模板中,我必须显示一个“name”值。如果表单中存在客户id值,则“名称”基于该值。如果为空,则“名称”基于用户对象。 “名称”未保存在模型中,因此必须对其进行计算

看起来很简单,但我无法让它工作。到目前为止,我所尝试的:

  • 尝试在get_context_data()中设置值-不起作用,因为get_context_data是在绑定表单数据之前调用的,因此我无法从表单访问customer_id值

  • 在form类中创建一个方法:

    def get_name(self):
       if self.is_bound:
            # return name based on form.cleaned_data['customer_id']
       else:
            # return name based on self.user.user_id
    
  • 调用模板中的方法。。。但它总是根据用户返回名称。我可以在模板中看到带有值的输入字段,但不知何故表单没有绑定

    我对CBV不是很舒服,但我不能把它改成FBV。你知道我该怎么做吗?
    提前谢谢

    好吧,看来我已经成功了。如果从绑定字段中请求,则可以在get_context_数据中获取字段的值(仍然很奇怪,因为form.is_bound仍然为False??)

    以前,我在做

    company_id = context['form'].fields['company_id'].value()
    
    …但这显然不起作用

    company_id = context['form'].fields['company_id'].value()