너무 기본적이라 알고 있을 수 있지만, 불편했기에 정리해둠
Form, Modelform, BSModalModelForm 에서 request 객체를 직접 접근이 안되기에, 왜 안될까 보는 중에 __init__ 함수 호출시에 매개변수로 넘어온다는 것을 보니 그냥 그값을 저장해서 사용하자는 접근
코드를 보는 것이 낫겠다
class ProductProfileUpdateForm(BSModalModelForm, ProductProfileForm):
# date = forms.DateField(
# error_messages = {
# 'invalid': 'YYYY-MM-DD 입력'
# })
title = ""
is_admin = 0
class Meta:
model = ProductProfile
fields = __all__
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
print("=== ProductProfileForm ===", args, kwargs)
requestdata = kwargs.pop("request", None)
print(requestdata)
self.is_admin = requestdata.user.is_superuser
print(self.is_admin)
init 함수에서 kwargs 를 찍어 보니깐,
=== ProductProfileForm === () {'initial': {}, 'prefix': None, 'instance': <ProductProfile: test111111>, 'request': <WSGIRequest: GET '/productprofile/36/update'>}
출력되는 변수중에 request 가 떡하니 자리를 잡고 있네.
그럼 pop 으로 뽑아서 쓰면 되겟다 생각해서
user.is_superuser 값을 뽑아 보니 정상으로 동작.
끝.