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. For more options, visit https://groups.google.com/d/optout.

