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 <bulletchauha...@gmail.com>
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 <
> anthony.petri...@gmail.com> 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 django-users+unsubscr...@googlegroups.com.
>> To post to this group, send email to django-users@googlegroups.com.
>> 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
> django-users+unsubscr...@googlegroups.com.
> To post to this group, send email to django-users@googlegroups.com.
> 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 django-users+unsubscr...@googlegroups.com.
To post to this group, send email to django-users@googlegroups.com.
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.

Reply via email to