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 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/CANjUscDRzDpXMc3E30hH0tEDbaT--JLgnJGtTOpjoqfjkzHyzQ%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.