3
양식 클래스 내에서 인증 된 사용자에게 액세스를 시도하고 있습니다. 나는 요청 객체를 view 클래스에서 init 클래스로 넘겨 주었지만, 그것은보기 흉한 것처럼 보였다. 보기 외부에서 인증 된 사용자 또는 요청 개체에 액세스하는 더 좋은 방법이 있습니까? 이것이 내가 개인적으로보기에서 폼에 사용자를 통과하는 것을 선호 작동하지만 http://code.djangoproject.com/wiki/CookBookThreadlocalsAndUser보기 외부에서 인증 된 사용자에게 액세스
:
class LicenseForm(forms.Form):
'''def __init__(self, *args, **kwargs):
#self.fields['license'] = forms.ModelChoiceField(queryset=self.license_queryset(), empty_label='None', widget=forms.RadioSelect())'''
def license_queryset():
queryset = License.objects.filter(organization__isnull=True)
# add addtional filters if the logged in user belongs to an organization
return queryset
licenses = forms.ModelChoiceField(queryset=license_queryset(), empty_label='None', widget=forms.RadioSelect())
내가 작업중인 코드를 표시하기 위해 내 원래 게시물을 편집했습니다. 따라서 license_queryset 메서드에서 인증 된 사용자 연결에 따라 몇 가지 추가 필터를 추가하고 싶습니다. 주석 처리 된 __init__은 뷰에서 요청 객체를 받아 들일 곳입니다. – CrashRoX
당신의 권리, 그것은 더 깨끗해 보입니다. 모든 도움에 감사드립니다. 이전에 동일한 코드 접근법을 사용했지만 license_queryset 내에서 자체 액세스가 가능하다는 문제에 부딪 혔습니다. init을 통해 동적으로 라이센스 양식 필드를 만들어야 만했습니다. license_queryset에 자체 범위가 있고 라이센스 형식 선언에서 여전히 호출 할 수있는 방법이 있습니까? 이것이 새로운 질문 인 경우 죄송합니다. 그냥 장고와 파이썬을 시작하는 것입니다 :) – CrashRoX
@CrashRoX : 당신 말이 맞아요, 나는 중요한 점을 잊어 버렸습니다. 그것을 바꿨습니다. 클래스 메쏘드를 정의 할 때 적어도 하나의 매개 변수를 제공해야합니다 (편의상'self'라고 함). 나중에 함수를 호출하면 전달할 필요가 없으며 자동으로 수행됩니다. 이것은 당신이 그것에 들어가는 것을 도울 것입니다 : http://docs.python.org/tutorial/classes.html –