2016-10-30 5 views
0

저는 양식에서 송장 공급자를 선택하기 위해 ModelChoiceField를 사용하고 있습니다. 현재의 경우 모든 제공자를 쿼리 세트로 반환합니다.forms.py에서 현재 서명 된 사용자를 얻는 방법?

하지만 서명 한 사용자가 만든 제공자 만 반환해야합니다. Provider에는 user이라는 ForeignKey 필드가 있습니다. 나는이 같은 개체를 필터링 할 필요가

class InvoiceCreationForm(forms.Form): 
    # ... 
    provider = forms.ModelChoiceField(
     label='Provider', 
     required=False, 
     queryset=Provider.objects.all(), 
     widget=forms.Select(attrs={ 
      'name': 'provider', 
      'class': 'form-control', 
      'id': 'input-invoice-provider', 
     }) 
    ) 

: 여기

내 양식이다

Provider.objects.filter(user=current_user) 

어떻게 서명 된 사용자를받을 수 있나요? 아니면 request 개체를보기 외부에 가져올 수 있습니까? 나는 __init__ 양식에서 현재 사용자를 얻으려고 시도한 다음 self.user으로 설정했습니다. 하지만 self.user과 같은 쿼리에는 사용할 수 없습니다.

+0

시도한 코드를 표시하십시오. –

+0

@ DanielRoseman이 답변 : http://stackoverflow.com/a/7300076/4471283 –

답변

1

__init__()에서 사용자를 얻는 것은 솔루션의 첫 번째 부분 일뿐입니다. 또한 해당 사용자를 사용하여 쿼리 세트를 필터링해야합니다.

class InvoiceCreationForm(forms.Form): 
    def __init__(self, *args, **kwargs): 
     self.user = kwargs.pop('user', None) 
     super(InvoiceCreationForm, self).__init__(*args, **kwargs) 
     if self.user: 
      self.fields['provider'].queryset = Provider.objects.filter(user=self.user) 
+0

그것은 고마워요! :) –