TourLead と Languages の 2 つのモデルがあります。TourLead には、言語への ForeignKey があります。TourLead インスタンスと Language (inline_formset を使用) を作成するには、CreateView が必要です。作成されたインライン フォームセットがページに表示されません。テンプレートで {{lang_formset}} として宣言します。
フォーム.py
class LeadForm(forms.ModelForm):
...
LanguageFormSet = inlineformset_factory(
models.Language,
models.TourLead,
extra=1,
exclude=[]
)
ビュー.py
class LeadCreate(CreateView):
template_name = 'leads/create-lead.html'
success_url = reverse_lazy('leads-list')
form_class = forms.LeadForm
def get_context_data(self, **kwargs):
context_data = super(LeadCreate, self).get_context_data(**kwargs)
context_data['lang_formset'] = forms.LanguageFormSet()
return context_data
models.py
class Language(models.Model):
language = models.CharField(max_length=80,
verbose_name='Language')
def __unicode__(self):
return self.language
class TourLead(models.Model):
name = models.CharField(max_length=80,
verbose_name='Name')
gender = models.CharField(max_length=1,
verbose_name='Gender')
language = models.ForeignKey('Language')
card_number = models.CharField(max_length=15,
verbose_name='Card Number',
blank=True,
null=True)
expire_date = models.DateField(verbose_name='Expire Date',
blank=True,
null=True)
professional = models.CharField(max_length=1,
verbose_name='Professional')
def __unicode__(self):
return self.name