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.
On Friday, September 7, 2018 at 9:47:51 AM UTC-4, Akshay Gaur wrote:
-- 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 = StUserTaxDetailsfields = ('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 = UserTaxesMultiFormsuccess_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+unsubscribe@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.
For more options, visit https://groups.google.com/d/optout.
No comments:
Post a Comment