I want to make in my Service a small program that will keep records of meetings with the authorities. I don’t understand how to work with formsets. I read the documentation both in Russian and in English, but it’s impossible to save and read the entire “train with cars” formset .
The form of the document is as follows: Minutes of the meeting No. nr_document from date_unfold
Present: employees
MeetingItem - item number, description (tasks), due date, responsible
MeetingItem - item number, description (tasks), due date, responsible
etc...
How to connect two models of the form MeetingHeader and MeetingItem ? How to use formset_factory in view.py ? How then to read the generated document?
Please show or explain.
Then I will independently master the dynamic addition / removal of fields as in the example - http://whoisnicoleharris.com/2015/01/06/implementing-django-formsets.html
model.py from django.db import models class Employee(models.Model): name = models.CharField(max_length=50) surname = models.CharField(max_length=50) email = models.EmailField(max_length=70, blank=True, null= True, unique= True) def __str__(self): return '%s %s' % (self.name, self.surname) class Meta: ordering = ['name'] class Meeting(models.Model): nr_document = models.CharField(max_length=10) date_unfold = models.DateField( blank=True, null=True) employees = models.ManyToManyField('Employee') def __str__(self): return 'Proces verbal nr.%s din %s' % (self.nr_document, self.date_unfold) class Meta: ordering = ['-date_unfold'] class MeetingItem(models.Model): nr_punct = models.CharField(max_length=10) text = models.TextField() date_unfold = models.DateField( blank=True, null=True) employees = models.ManyToManyField('Employee') forms.py
from django import forms from .models import Employee, Meeting, MeetingItem class EmployeeForm(forms.ModelForm): class Meta: model = Employee fields = '__all__' class MeetingForm(forms.ModelForm): class Meta: model = Meeting fields = '__all__' class MeetingItemForm(forms.ModelForm): class Meta: model = MeetingItem fields = '__all__' view.py
from django.template import RequestContext from django.forms.formsets import formset_factory from django.shortcuts import render_to_response from django.shortcuts import render, redirect, get_object_or_404 from .models import Employee, Meeting from .forms import EmployeeForm, MeetingForm, MeetingItemForm def meeting_item(request): MeetingFormSet = formset_factory(MeetingForm) MeetingItemFormSet = formset_factory(MeetingItemForm, extra=2) if request.method == "POST": meeting_formset = MeetingFormSet(request.POST, prefix='meetings') meetingItem_formset = MeetingItemFormSet(request.POST, prefix='meetingItems') if meeting_formset.is_valid() and meetingItem_formset.is_valid(): message = "Perfect pass" **?????.save()** # здесь не знаю как сохранить else: message = "NU A MERS PERFECT" meeting_formset = MeetingFormSet(prefix='meetings') meetingItem_formset = MeetingItemFormSet(prefix='meetingItems') return render_to_response('blog/meeting_item.html', { 'message': message, 'meeting_formset': meeting_formset, 'meetingItem_formset': meetingItem_formset }, context_instance=RequestContext(request)) else: return render_to_response('blog/meeting_item.html', {'meetingItem_formset': MeetingItemFormSet(), 'meeting_formset': MeetingFormSet() }, context_instance=RequestContext(request))