当请求未定义时,获取已登录的用户
我很难找到使其工作的方法; 我需要使用由当前登录用户创建的团队列表来获取查询集。当请求未定义时,获取已登录的用户
我看形式如下:
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=Team.objects.all().filter(team_hr_admin=request.User))
#team_id = forms.ChoiceField(queryset = Team.objects.filter(team_hr_admin= MyUser))
def team_select(self):
data = self.cleaned_data['team_choice']
return data
views.py:
def TeamSelect(request):
if request.method == "POST":
select_form = EditSelectTeam(request.POST)
print('sucess')
else:
select_form = EditSelectTeam(request)
return render(request,'link_project.html',
{'select_form':select_form })
我得到的错误是请求没有定义
你可以通过使用初始化请求方法如:
class EditSelectTeam(forms.Form):
team_choice = forms.ModelChoiceField(widget=forms.RadioSelect, queryset=None)
def __init__(self, request, *args, **kwargs):
super(EditSelecTeam, self).__init__(*args, **kwargs)
self.fields['team_choice'].queryset = Team.objects.all().filter(team_hr_admin=request.User))
def team_select(self):
data = self.cleaned_data['team_choice']
return data
记住传递到自己的形式,如要求:
form = your_form(request)
嗨Mauricio thx为您的答案。现在,当我在我的表单中尝试POST时,它说QueryDict的对象没有属性'user'。我用视图更新了我的问题。任何想法 ? – Ben2pop
select_form = EditSelectTeam(request,request.POST试一下,告诉我 –
该过滤器正在工作? –
[创建动态选择字段]的可能的复制(https://*.com/questions/3419997/creating-a-dynamic-choice-field ) – georgeofallages
我吮吸使用SO,但我认为你可以在其他问题中找到你的答案。你可以重写你的EditSelectTeam构造函数以将用户存储为team_choice过滤吗? – georgeofallages