2017-02-27 17 views
-1

私は現在PythonとDjangoを使ってWebアプリケーションを作成しています。私のタイトルは私が自分のフォームクラスの1つにリクエストを渡そうとしているので、ユーザーデータを使用することができます。私はこれに関する多くの質問があることを知っていますが、私はそれらのそれぞれを試して、それは私がユーザーパラメータにアクセスすることを許可していません。しかしDjangoフォームにリクエストを渡してもまだ定義されていません

class CreateEventView(View): 
    form_class = CreateEventForm 
    template_name = 'create-event.html' 

    def get(self, request): 
     form = self.form_class(request, request.POST) 
     if request.user.is_authenticated: 

      # Now check to make sure the user has created an "Event Organiser" name 
      eo = EventOwner.objects.filter(owner_id=request.user.id) 

      # If there has been an event owner made 
      if eo.count() > 0: 
       return render(request, self.template_name, {'form': form}) 

      # Else send the user to the create event owner 
      else: 
       messages.warning(request, 'You must have an organiser profile setup before creating an event.') 
       return redirect('/create-organiser') 
     else: 
      messages.success(request, 'You have to login before you can create an event.') 
      return redirect('/login') 

私はそれが動作しませんself.request使用しようと、これまで:

マイコード:

フォームクラス:

class CreateEventForm(forms.ModelForm): 

def __init__(self, request, *args, **kwargs): 
    self.request = request 
    super(CreateEventForm, self).__init__(*args, **kwargs) 

name = forms.CharField(widget=forms.TextInput(attrs={'class': 'form-control'})) 
image = forms.CharField(widget=forms.TextInput(attrs={'class': 'form-control'})) 
description = forms.CharField(widget=forms.Textarea(attrs={'class': 'form-control'})) 
location = forms.CharField(widget=forms.TextInput(attrs={'class': 'form-control'})) 
ticket_name = forms.CharField(widget=forms.TextInput(attrs={'class': 'form-control'})) 
event_owner = forms.ModelChoiceField(queryset=EventOwner.objects.all().filter()) 
ticket_price = forms.CharField(widget=forms.TextInput(attrs={'class': 'form-control'})) 

class Meta: 
    model = Event 
    fields = ['name', 'image', 'description', 'category', 'event_owner', 'ticket_name', 'ticket_price', 'location'] 

マイビュー。それは未解決の参照 "自己"と言います

+0

*それ? –

+1

私はPyCharmを使用しているので、「self.request」を使用しようとするたびに赤く下線が引かれ、未解決の参照となっています。 –

+0

しかし、どこでそれを使ってみようとしていますか? –

答えて

0

上記はまだ問題なく動作しますが、私はセクションからいくつかのものを混同していました。 の初期のままにしておいてください。

私はからrequest.userパラメータでそれをフィルタリングすることにより設定されたクエリを制限することができた、最初のすべてのオブジェクトのクエリセットを作成し、以下のようにそれらを上書きすることによって:*それは示してい

class CreateEventForm(forms.ModelForm): 

    event_owner = forms.ModelChoiceField(queryset=User.objects.all()) 

    def __init__(self, request, *args, **kwargs): 
     self.request = request 
     super(CreateEventForm, self).__init__(*args, **kwargs) 

     self.fields['event_owner'].queryset = EventOwner.objects.filter(owner=self.request.user) 
関連する問題