Closed andy2046 closed 8 years ago
in inventoryForm the user I get is None
class inventoryForm(forms.ModelForm): class Meta: model = inventory fields = 'all'
def init(self, _args, *_kwargs): user = kwargs.pop('user',None)
You can now get request
param in your forms __init__
. Resolved here https://github.com/asifpy/django-crudbuilder/commit/543ed2e9cc47d7692725babd46069ee7d7adb626.
Check here : Custom forms in crudbuilder
Hi asifpy,
I tested but still None error, what I added in is as following:
mixins.py class CreateUpdateViewMixin(CrudBuilderMixin): """Common form_valid() method for both Create and Update views""" def get_form_kwargs(self): kwargs = super(CreateUpdateViewMixin, self).get_form_kwargs() if self.custom_form: kwargs.update({'request': self.request}) return kwargs
views.py def generate_create_view(self): """Generate class based view for CreateView"""
name = model_class_form(self.model + 'CreateView')
create_args = dict(
form_class=self.get_actual_form('create'),
model=self.get_model_class,
template_name=self.get_template('create'),
permissions=self.view_permission('create'),
permission_required=self.check_permission_required,
login_required=self.check_login_required,
inlineformset=self.inlineformset,
success_url=reverse_lazy('{}-{}-list'.format(self.app, self.model)),
custom_form=self.createupdate_forms or self.custom_modelform
)
def generate_update_view(self):
"""Generate class based view for UpdateView"""
name = model_class_form(self.model + 'UpdateView')
update_args = dict(
form_class=self.get_actual_form('update'),
model=self.get_model_class,
template_name=self.get_template('update'),
permissions=self.view_permission('update'),
permission_required=self.check_permission_required,
login_required=self.check_login_required,
inlineformset=self.inlineformset,
custom_form=self.createupdate_forms or self.custom_modelform,
success_url=reverse_lazy('{}-{}-list'.format(self.app, self.model))
)
my own form: class inventoryForm(forms.ModelForm): class Meta: model = inventory fields = 'all'
def __init__(self, *args, **kwargs):
self.request = kwargs.pop('request', None)
user1 = self.request.user
pprint(user1)
super(inventoryForm, self).__init__(*args, **kwargs)
AttributeError at /incident/crud/bd_incident/inventories/create/
'NoneType' object has no attribute 'user'
Request Method: GET
Request URL: http://localhost:8999/incident/crud/bd_incident/inventories/create/
Django Version: 1.8.6
Exception Type: AttributeError
Exception Value:
'NoneType' object has no attribute 'user'
Exception Location: ...\bd_incident\forms.py in init, line 26
Hi, After added in to CrudBuilderMixin, problem solved, thx
class CrudBuilderMixin(LoginRequiredMixin, PermissionRequiredMixin): """
Hi asifpy,
Could you please help to advise how can I get request.user in forms.py and crud.py, in normal view.py I can use below to pass.
form = inventoryForm(user=request.user)
in forms.py class inventoryForm(forms.ModelForm): class Meta: model = inventory fields = 'all'
in crud.py
class inventoryCrud(BaseCrudBuilder): model = inventory custom_modelform = inventoryForm search_fields = ['appcode__code','appcode_desc','hostname','alias','env','tier'] ... login_required=True permission_required=False inlineformset = inventoryInlineFormset