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.

Reply via email to