gpt4 book ai didi

python - Fom 缺少 1 个必需的位置参数 : 'request' in form

转载 作者:太空宇宙 更新时间:2023-11-03 14:43:34 24 4
gpt4 key购买 nike

我正在尝试使用以前的 stackoverflow 答案和谷歌来让我的表单工作,但似乎没有什么对我有用。

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

我正在使用名为 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'

如果我没有将用户放入我的 __init__ 中,我会收到表单,但是当我单击 POST 时,会收到错误

AttributeError: 'MyUser' object has no attribute 'user'

最佳答案

您的 __init__ 方法采用 Userrequest

def __init__(self, User, request, *args, **kwargs):

但您只能将其中之一传递给表单:

select_form = EditSelectTeam(request.user, request.POST)
...
select_form = EditSelectTeam(request)

我将更改 __init__ 方法以仅采用 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)

然后更改 View 以始终传递request.user

select_form = EditSelectTeam(request.user, request.POST)
...
select_form = EditSelectTeam(request.user)

关于python - Fom 缺少 1 个必需的位置参数 : 'request' in form,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46422331/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com