Python Fom在表单中缺少1个必需的位置参数:“请求”
我正在尝试使用以前的stackoverflow答案和google来获取我的表格,但似乎没有任何东西对我有效 我有一个模型项目和一个项目团队,我希望用户能够从他创建的团队中进行选择,并将其链接到项目 我正在使用一个名为MyUser的自定义用户 这是我选择团队的表格:Python Fom在表单中缺少1个必需的位置参数:“请求”,python,django,django-models,django-forms,Python,Django,Django Models,Django Forms,我正在尝试使用以前的stackoverflow答案和google来获取我的表格,但似乎没有任何东西对我有效 我有一个模型项目和一个项目团队,我希望用户能够从他创建的团队中进行选择,并将其链接到项目 我正在使用一个名为MyUser的自定义用户 这是我选择团队的表格: from django import forms from django.contrib.auth.models import User from registration.models import MyUser from .mod
from django import forms
from django.contrib.auth.models import User
from registration.models import MyUser
from .models import Project, Team
from django.contrib.auth import get_user_model
User = get_user_model()
class EditSelectTeam(forms.Form):
team_choice = forms.ModelChoiceField(widget=forms.RadioSelect, queryset=None)
def __init__(self, User, request, *args, **kwargs):
super(EditSelectTeam, self).__init__(*args, **kwargs)
self.fields['team_choice'].queryset = Team.objects.all().filter(team_hr_admin = request.User)
我的看法:
def TeamSelect(request):
if request.method == "POST":
select_form = EditSelectTeam(request.user, request.POST)
if select_form.is_valid():
print('sucess')
else:
print('Fail')
else:
select_form = EditSelectTeam(request)
return render(request,'link_project.html',
{'select_form':select_form })
如果在我的表单中输入request.User,我会在视图中看到以下错误:
TypeError: __init__() missing 1 required positional argument: 'request'
如果我没有将用户放入我的_uinit中,我会得到表单,但当我单击POST时,我会得到错误
AttributeError: 'MyUser' object has no attribute 'user'
您的_uinit _;方法接受用户和请求
但您只能将其中一个传递给表单:
select_form = EditSelectTeam(request.user, request.POST)
...
select_form = EditSelectTeam(request)
我会将uuu init_uuuuu方法更改为只接受用户小写
def __init__(self, user, *args, **kwargs):
super(EditSelectTeam, self).__init__(*args, **kwargs)
self.fields['team_choice'].queryset = Team.objects.all().filter(team_hr_admin=user)
然后将视图更改为始终传递request.user
else:select\u form=EditSelectTeam使用我得到的编辑尝试以下操作:\uuuu init\uuuu缺少1个必需的位置参数:“request”确定获得了!它比你更有效;什么确切地代表请求?对不起,我恐怕不明白你所说的“什么确切地代表请求”是什么意思。您的表单实际上并不需要请求,它只需要登录的用户。因此,我从表单中删除了请求,然后将您作为request.user访问的登录用户传递给视图中的表单。唯一的其他更改是使用小写用户,这样就不会与模型用户冲突。
def __init__(self, user, *args, **kwargs):
super(EditSelectTeam, self).__init__(*args, **kwargs)
self.fields['team_choice'].queryset = Team.objects.all().filter(team_hr_admin=user)
select_form = EditSelectTeam(request.user, request.POST)
...
select_form = EditSelectTeam(request.user)