2017-09-26 13 views
1

私は以前のstackoverflow答えとgoogleを使用してフォームの作業をしようとしていますが、何も私のために働くようです。FOMが見つからない1必要な位置引数: '要求'フォーム

私はモデルプロジェクトとプロジェクトチームを持っており、ユーザーが作成したチームの1つを選択してプロジェクトにリンクさせたいと考えています。

私はチームを選択するために私のフォームでMyUserと

というカスタムユーザー使用しています:私の形で私が入れた場合

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 }) 

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) 

私の意見をrequest.User私の見解に誤りがあります:

TypeError: __init__() missing 1 required positional argument: 'request' 

私は__init__にユーザーを入れていない場合、私は、フォームを取得するが、私はPOSTをクリックしたときに、私はあなたの__init__方法がUserrequest

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

を取るだけで、あなた

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

: 'select_form = EditSelectTeam()'私が手に編集して、この – Akash

答えて

1

エラーが出ますこれらのいずれかを次の形式に渡します。

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

I wou __init__方法を変更LDだけ

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を渡すように表示を変更、 user(小文字)を取ります。他

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

を試してみてください。__のinit __()不足している1つの必要な位置引数: '要求' – Ben2pop

+0

上記の私のコードは、そのエラーを与えないだろう。 – Alasdair

+0

それを手に入れました。それはあなたの仕事を;)正確に要求を表すか? – Ben2pop

関連する問題