Django Forms:视图中的空 kwargs

Django Forms: Empty kwargs from Views

我正在尝试使用视图中的参数初始化 Django 表单。但是,当我尝试在表单的 init 中使用 kwargs 时,我发现它始终是空的。为什么会这样?我错过了什么吗?

我的观点(文件名:“FirstView.py”):

def create_userStory(request, proyect_id):

if request.method=='POST':
    auxForm = UserStoryForm(request.POST, proyect_id=proyect_id)

我的表格(文件名:“forms.py”):

class UserStoryForm(forms.ModelForm):

def __init__(self, *args, **kwargs):
    proyectId = kwargs.pop('proyect_id', None)
    super(UserStoryForm, self).__init__(*args, **kwargs)
    team = Team.objects.get(proyect_id=proyectId)

我在我的表单中尝试了 debugging/printing kwargs,但我总是得到 {},这意味着参数来自观点没有通过。

之前我尝试解决这些现有问题:

django form: Passing parameter from view.py to forms gives out error

Django Forms: pass parameter to form

Django formset - empty kwargs

签名中的 *args**kwargs 用于捕获未被其他定义的参数位置占用的参数。 所有未使用的未命名参数将放在列表 args 中,所有命名参数将放在字典 kwargs 中。您可以根据需要更改名称。

一个例子:

def function_1(a, b, *args, **kwargs):

这样的电话
function_1(1, 2, 3, 4, c=5, d=6)

将导致以下变量在 function_1 中可用:

a = 1
b = 2
args = (3, 4)
kwargs = {'c': 5, 'd': 6}

所以应用于你的问题意味着只要你没有任何命名参数,你就会有一个空 kwargs

我遇到了同样的问题。 经过一个小时的搜索 (...),我发现在我对 __init__ 的调用中:

myModelForm(request.POST, namedargument=val)

val 实际上是 None 当我认为它包含一个值时。

然后,对于 __init__:如果 namedargument=None ==> namedargument 单独。 kwargs 变为 args !

这就是 kwargs 为空的原因。

所以,请检查您传递的值,它可能 None 是错误的。

(我知道,这是一个 2 年的答案,但我很想在一小时前找到这个...)