Hi, I made it more simple and I implemented this also This is a solution is a little different from other solution you have three model form, one view which is rendering all the form. If this is the case or somewhat similar then. simply give *name *attribute to each submit button like: *<button name="firstFrom" type="submit">* and in the view. * if request.POST:* or if you are using class-based views then inpost func. simply check for * if 'firstForm' in request.POST:*
you get the idea I think. This will help you recognize which submit button is hit. Regards Dev Trippister On Mon, Sep 10, 2018 at 10:33 AM Sunil Kothiyal <[email protected]> wrote: > THIS IS MY FORM. I HOPE IT WILL CLEAR THE CONCEPT. > > [image: STLY.png] > > On Sun, Sep 9, 2018 at 1:59 AM Savvey Chauhan <[email protected]> > wrote: > >> First Create 3 Views For each form . >> Second Create urls for all 3 views . >> THiRD CHANGE ACTION URL ACCORDING TO VIEWS URL >> ADD AJAX TO SUBMIT THE FORM >> IF YOU WANT TO DISPLAY A TOAST MESSAGE USE TOASTR ON HTML PAGE. >> eg : >> >> <form action="/YOURFIRSTFORMURL" method="post" id="target"> >> {% csrf_token %} >> <div class="form-group"> >> <label for="fname">First Name:</label> >> <input type="text" class="form-control" id="fname" placeholder="First >> Name" name="fname"> >> </div> >> <div class="form-group"> >> <label for="lname">Last Name:</label> >> <input type="text" class="form-control" id="lname" placeholder="Last >> Name" name="lname"> >> </div> >> >> <div class="form-group"> >> <label for="lname">Gender:</label> >> <input type="text" class="form-control" id="gender" placeholder="Last >> Name" name="gender"> >> </div> >> <button type="submit" class="btn btn-default">Submit</button> >> </form> >> >> </div> >> >> >> >> <script> >> $( "#target" ).submit(function( event ) { >> var form = $("form").serialize(); >> $.ajax({ >> url: '', >> data: form , >> success: function (data) { >> toastr["success"]("New Student Added !") >> } >> }); >> event.preventDefault(); >> }); >> </script> >> >> <link rel="stylesheet" >> href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"> >> <link rel="stylesheet" >> href="//cdnjs.cloudflare.com/ajax/libs/toastr.js/latest/css/toastr.css"> >> <script >> src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> >> <script >> src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script> >> <script >> src="//cdnjs.cloudflare.com/ajax/libs/toastr.js/latest/js/toastr.min.js"></script> >> >> >> VIEWS.PY >> >> >> def update(request): >> fname = request.GET.get('fname') >> lname = request.GET.get('lname') >> gender = request.GET.get('gender') >> student.objects.create(firstname=fname,lastname=lname,gender=gender) >> return JsonResponse ({'Success':'Success'}) >> >> >> >> >> >> >> >> >> On Fri, Sep 7, 2018 at 7:26 PM Anthony Petrillo < >> [email protected]> wrote: >> >>> Here is an example. I've cut out some of the code, but I this will give >>> you the general idea. Note, I move the data from the Day form in to the >>> Classes table. But you could just save both sets of data to their >>> respective tables if desired. >>> >>> in views.py >>> >>> class ClassesAddView(LoginRequiredMixin,View): >>> classesFormClass = ClassesRegForm >>> daysFormClass = DaysForm >>> template_name = 'qing/classes.html' >>> >>> def get(self,request,role='NoRole'): >>> classesForm = self.classesFormClass() >>> context['form'] = classesForm >>> daysForm = self.daysFormClass() >>> context['daysform'] = daysForm >>> return render(request,self.template_name, context) >>> >>> def post(self, request, *args, **kwargs): >>> classesForm = self.classesFormClass(request.POST) >>> daysForm = self.daysFormClass(request.POST) >>> if classesForm.is_valid() and daysForm.is_valid(): >>> days = str(request.POST.getlist('days')) >>> reference = request.POST['reference'] >>> classes = classesForm.save() >>> classes = Classes.objects.get(reference=reference) >>> classes.days = days >>> classes.save() >>> else: >>> classesForm = self.classesFormClass(request.POST) >>> context['form'] = classesForm >>> daysForm = self.daysFormClass(request.POST) >>> context['daysform'] = daysForm >>> context['datavalid'] = False >>> return render(request, self.template_name, context) >>> return HttpResponseRedirect(reverse('classesadd',args=(role,))) >>> >>> in forms.py >>> >>> class ClassesForm(ModelForm): >>> class Meta: >>> model = Classes >>> fields = ['reference','course','teachers',etc...] >>> >>> class DaysForm(forms.Form): >>> OPTIONS = ( >>> ("Sunday", "Sunday"), >>> ("Monday", "Monday"), >>> ("Tuesday", "Tuesday"), >>> ("Wednesday", "Wednesday"), >>> ("Thursday", "Thursday"), >>> ("Friday", "Friday"), >>> ("Saturday", "Saturday"), >>> ) >>> days = forms.MultipleChoiceField(widget=forms.CheckboxSelectMultiple, >>> choices=OPTIONS) >>> >>> >>> On Friday, September 7, 2018 at 9:47:51 AM UTC-4, Akshay Gaur wrote: >>>> >>>> I think it would be easier to write out a custom form (without using >>>> your model classes, just the fields that you will need for all the models) >>>> and then in the save method for that form's view, you create model objects >>>> using the fields in the POST request. >>>> >>>> On Friday, September 7, 2018 at 5:43:11 AM UTC-5, Django Lover wrote: >>>>> >>>>> >>>>> I have one page, which I have to show three model form and three >>>>> different submit button for each. >>>>> >>>>> My question is how I can save these three form individually? >>>>> >>>>> FOLLOWING IS CODE:- >>>>> >>>>> **form.py** >>>>> >>>>> >>>>> class UserTaxesMultiForm(MultiModelForm): >>>>> form_classes = { >>>>> 'user_tax_form': MyForm, >>>>> 'user_discount_form': DiscountForm, >>>>> 'user_shiping_form': ShipmentForm, >>>>> } >>>>> >>>>> *Note- myForm, DiscountForm, ShipmentForm are model forms. like >>>>> following-* >>>>> >>>>> class MyForm(forms.ModelForm): >>>>> prefix = 'tax' >>>>> class Meta: >>>>> model = StUserTaxDetails >>>>> fields = ('tax_name', 'tax_rate') >>>>> >>>>> tax_name = forms.CharField(max_length=10, >>>>> widget=forms.TextInput(), >>>>> required=True, label="tax name") >>>>> >>>>> tax_rate = forms.FloatField(required=True, label="tax rate") >>>>> >>>>> >>>>> error_messages = { >>>>> 'required': _('fields are required.'), >>>>> } >>>>> >>>>> def clean_title(self): >>>>> return self.cleaned_data['tax_name'] >>>>> >>>>> def clean(self): >>>>> tax_name = self.cleaned_data.get('tax_name') >>>>> tax_rate = self.cleaned_data.get('tax_rate') >>>>> >>>>> if not tax_name and not tax_rate: >>>>> raise forms.ValidationError( >>>>> self.error_messages['required'], >>>>> code='required', >>>>> ) >>>>> return self.cleaned_data >>>>> >>>>> **view.py** >>>>> class AddTaxView(LoginRequiredMixin, CreateView): >>>>> template_name = 'invoices/add_tax.html' >>>>> form_class = UserTaxesMultiForm >>>>> success_url = '/add/tax/' >>>>> >>>>> *{WHAT IS THE CODE HERE FOR THE POST METHOD TO SAVE DATA ACORDING >>>>> DIFFRENT FORM SUBMIT} * >>>>> >>>>> >>>>> >>>>> >>>>> **HTML** >>>>> >>>>> >>>>> >>>>> <form method="POST"> >>>>> {% form.user_tax_form%} >>>>> >>>>> <input type="submit" value="Submit" /> >>>>> </form> >>>>> >>>>> <form method="POST"> >>>>> {% form.user_discount_form%} >>>>> >>>>> <input type="submit" value="Submit" /> >>>>> </form> >>>>> >>>>> <form method="POST"> >>>>> {% form.user_shiping_form%} >>>>> >>>>> <input type="submit" value="Submit" /> >>>>> </form> >>>>> >>>>> PLEASE HELP >>>>> >>>> -- >>> You received this message because you are subscribed to the Google >>> Groups "Django users" group. >>> To unsubscribe from this group and stop receiving emails from it, send >>> an email to [email protected]. >>> To post to this group, send email to [email protected]. >>> Visit this group at https://groups.google.com/group/django-users. >>> To view this discussion on the web visit >>> https://groups.google.com/d/msgid/django-users/122a47d7-5cdd-47ee-8524-fb55fb80285e%40googlegroups.com >>> <https://groups.google.com/d/msgid/django-users/122a47d7-5cdd-47ee-8524-fb55fb80285e%40googlegroups.com?utm_medium=email&utm_source=footer> >>> . >>> For more options, visit https://groups.google.com/d/optout. >>> >> -- >> You received this message because you are subscribed to a topic in the >> Google Groups "Django users" group. >> To unsubscribe from this topic, visit >> https://groups.google.com/d/topic/django-users/HlJSOz8zgwM/unsubscribe. >> To unsubscribe from this group and all its topics, send an email to >> [email protected]. >> To post to this group, send email to [email protected]. >> Visit this group at https://groups.google.com/group/django-users. >> To view this discussion on the web visit >> https://groups.google.com/d/msgid/django-users/CANjUscDRzDpXMc3E30hH0tEDbaT--JLgnJGtTOpjoqfjkzHyzQ%40mail.gmail.com >> <https://groups.google.com/d/msgid/django-users/CANjUscDRzDpXMc3E30hH0tEDbaT--JLgnJGtTOpjoqfjkzHyzQ%40mail.gmail.com?utm_medium=email&utm_source=footer> >> . >> For more options, visit https://groups.google.com/d/optout. >> > > > -- > *Thanks & Regards,* > > *Sunil Kothiyal* > > > -- > You received this message because you are subscribed to the Google Groups > "Django users" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To post to this group, send email to [email protected]. > Visit this group at https://groups.google.com/group/django-users. > To view this discussion on the web visit > https://groups.google.com/d/msgid/django-users/CAB%3DWnGdxtS74QsphmWxCwyUa5b%3DZEEpeji0s6%3DkPRz9GtB0uAw%40mail.gmail.com > <https://groups.google.com/d/msgid/django-users/CAB%3DWnGdxtS74QsphmWxCwyUa5b%3DZEEpeji0s6%3DkPRz9GtB0uAw%40mail.gmail.com?utm_medium=email&utm_source=footer> > . > For more options, visit https://groups.google.com/d/optout. > -- You received this message because you are subscribed to the Google Groups "Django users" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at https://groups.google.com/group/django-users. To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/CALZ%3DbEL_qRnhYHBQbLPSc67HnX_zyyDzO7ddjKyO3zS3MGEhjQ%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.

