首页 > 解决方案 > 如何将变量传递给 Django 表单?

问题描述

我一直在 stackoverflow 上阅读很多这样的问题,但似乎没有一个有效。我想做的就是制作一个过滤表单下拉菜单。我不知道该怎么做。我得到 main 没有定义的错误......但我确定那是因为它没有初始化或什么?我很困惑哈哈。

我的表单代码如下所示:

class AssignForm(ModelForm):

class Meta():
    model = Address
    fields = ['overseer','publisher', 'status']

def __init__(self, *args, **kwargs,):
    super(AssignForm, self).__init__(*args, **kwargs)
    self.fields['publisher'].queryset = Publisher.objects.filter(service_group=main)

这是我的观点:

def assignment(request, pk_a):

assign = Address.objects.get(id=pk_a)
num = request.user.overseer.publisher_set.first()
main = num.service_group.id
print(main)

我想在我的表单下拉列表中使用变量:main,这样我就可以限制相对于监督者的下拉列表。如何实现?谢谢!

form = AssignForm(main, request.POST, instance=assign)

context = {'form':form,}
return render(request, 'sms/assign.html', context )

标签: pythondjangodjango-modelsdjango-formsdjango-views

解决方案


将您的表格更改为

class AssignForm(ModelForm):

    class Meta():
        model = Address
        fields = ['overseer','publisher', 'status']

    def __init__(self, main, *args, **kwargs,):
        super(AssignForm, self).__init__(*args, **kwargs)
        self.fields['publisher'].queryset = Publisher.objects.filter(service_group=main)

并将视图中的 Form 实例化更改为

form = AssignForm(main, request.POST, instance=assign)

推荐阅读