2
0
mirror of https://github.com/inventree/InvenTree.git synced 2025-04-29 20:16:44 +00:00

Updated AjaxCreateView

- Return PK of newly-created object
- Populate fields with initial values as necessary
This commit is contained in:
Oliver 2018-04-25 15:27:23 +10:00
parent d88da28871
commit ab05c6ce1e

View File

@ -20,7 +20,7 @@ class AjaxView(object):
return self.template_name return self.template_name
def renderJsonResponse(self, request, form): def renderJsonResponse(self, request, form, data={}):
context = {'form': form, context = {'form': form,
'form_action': self.ajax_form_action, 'form_action': self.ajax_form_action,
@ -28,8 +28,6 @@ class AjaxView(object):
'submit_text': self.ajax_submit_text, 'submit_text': self.ajax_submit_text,
} }
data = {'form_valid': form.is_valid()}
data['html_form'] = render_to_string( data['html_form'] = render_to_string(
self.getAjaxTemplate(), self.getAjaxTemplate(),
context, context,
@ -46,20 +44,27 @@ class AjaxCreateView(AjaxView, CreateView):
if request.is_ajax(): if request.is_ajax():
form = self.form_class(request.POST) form = self.form_class(request.POST)
if form.is_valid(): data = {'form_valid': form.is_valid()}
form.save()
return self.renderJsonResponse(request, form) if form.is_valid():
obj = form.save()
# Return the PK of the newly-created object
data['pk'] = obj.pk
return self.renderJsonResponse(request, form, data)
else: else:
return super(CreateView, self).post(request) return super(CreateView, self).post(request)
def get(self, request): def get(self, request):
response = super(CreateView, self).get(request)
if request.is_ajax(): if request.is_ajax():
form = self.form_class() form = self.form_class(initial=self.get_initial())
return self.renderJsonResponse(request, form) return self.renderJsonResponse(request, form)
else: else:
return super(CreateView, self).post(request) return response