Inline-formset не отображается в моей форме
У меня есть модель Company и модель Address, связанные отношением один-к-одному в Address:
class Company(CompanyParent):
# some attributes
class Address(AddressParent):
company = models.OneToOneField(Company)
# some attributes
Поскольку они тесно связаны, я хочу, чтобы пользователь мог создать объект компании, объект адреса и отношения между ними, просто отправив одну форму; поэтому я изучил Inline Formsets. Вот мой forms.py:
class CompanyModelForm(forms.ModelForm):
class Meta:
model = Company
fields = # ...
labels = {
# ...
}
def __init__(self, *args, **kwargs):
super(HubModelForm, self).__init__(*args, **kwargs)
self.helper = FormHelper()
self.helper.form_class = 'form-horizontal style-form centered'
self.helper.add_input(Submit('submit', 'Submit'))
class AddressModelForm(forms.ModelForm):
class Meta:
model = Address
fields = # ...
labels = {
# ...
}
AddressFormSet = inlineformset_factory(Company, Address, form=AddressModelForm)
Вся логика обрабатывается представлением:
class CreateCompanyView(SuccessMessageMixin, CreateView):
model = Company
form_class = ComapnyModelForm
template_name = # ...
success_url = '/'
success_message = # ...
def get_context_data(self, **kwargs):
ctx = super(CreateCompanyView, self).get_context_data(**kwargs)
if self.request.POST:
ctx['formset'] = AddressFormSet(self.request.POST)
ctx['formset'] = AddressFormSet()
return ctx
def form_valid(self, form):
ctx = self.get_context_data()
formset = ctx['formset']
with transaction.atomic():
self.object = form.save()
if formset.is_valid():
formset.instance = self.object
formset.save()
return super(CreateCompanyView, self).form_valid(form)
Когда я использую {% crispy form %} в своем шаблоне, отображается только форма, относящаяся к Company. Я могу использовать {% crispy formset %} для отображения полей относительно Address, но в этом случае это две разные формы и в результате отправки создается только объект Company. что я упускаю?