0

顧客を作成するための CreateView がありますが、この顧客と共に「識別」モデルも作成する必要があります。モデルに外部キーを持つ識別モデルがあります。これは、任意の量の ID を一部 (運転免許証、パスポートなど) に追加できるようにする必要があるためです。

とにかく、現在のコード (新しい顧客を作成するだけ) は次のようになります。

class CustomerCreationView(CreateView):
    template_name = "customers/customer_information.html"
    form_class = CustomerInformationForm

    def get_context_data(self, *args, **kwargs):
        context_data = super(CustomerCreationView, self).get_context_data(*args, **kwargs)

        context_data.update({
            'new_customer': True,
        })

        return context_data

CustomerInformationForm は ModelForm です。識別用に別の ModelForm を作成したいのですが、2 番目のフォームを CreateView に追加する方法がわかりません。この記事を見つけましたが、これは 5 年前のもので、CreateView については話していません。

4

2 に答える 2

7

django-extra-viewsCreateWithInlinesViewから使用できます。コードは次のようになります。

from extra_views import CreateWithInlinesView, InlineFormSet


class IdentificationInline(InlineFormSet):
    model = Identification


class CustomerCreationView(CreateWithInlinesView):
    model = CustomerInformation
    inlines = [IdentificationInline]
于 2014-06-11T22:16:05.103 に答える
0
class CustomerCreationView(CreateView):
    template_name = "customers/customer_information.html"
    form_class = CustomerInformationForm
    other_form_class = YourOtherForm

    def get_context_data(self, *args, **kwargs):
        context_data = super(CustomerCreationView, self).get_context_data(*args, **kwargs)

        context_data.update({
            'new_customer': True,
            'other_form': other_form_class,    
        })

        return context_data
于 2013-06-18T21:31:37.827 に答える