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.

Reply via email to