Python Fom在表单中缺少1个必需的位置参数:“请求”

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

我正在尝试使用以前的stackoverflow答案和google来获取我的表格,但似乎没有任何东西对我有效

我有一个模型项目和一个项目团队,我希望用户能够从他创建的团队中进行选择,并将其链接到项目

我正在使用一个名为MyUser的自定义用户

这是我选择团队的表格:

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)