17

ユーザーが入力するフォームを作成したいと考えています。

このフォームは、Company モデルと Employee モデルで構成されています。

ユーザーに 1 つの会社と必要な数の従業員を 1 つのフォームに追加してもらいたい。

django admin では、この機能は StackedInline で簡単に実現できますが、パブリック フォームで同じ機能を実現するにはどうすればよいですか?


#models.py
class Company(models.Model):
    name = models.CharField()  

    def __unicode__(self):
        return self.name        


class Employee(models.Model):
    company = models.ForeignKey(Company)  
    first_name = models.CharField()  
    last_name = models.CharField()  


    def __unicode__(self):
        return self.first_name        

#admin.py
class EmployeeInline(admin.StackedInline):
    model = Employee


class CompanyAdmin(admin.ModelAdmin):

    inlines = [
        EmployeeInline,
    ]

    model = Company

admin.site.register(Company, CompanyAdmin)

#forms.py

class CompanyForm(ModelForm):
    class Meta:
        model = Company

class EmployeeForm(ModelForm):
    class Meta:
        model = Employee

#views.py
def companyform_view(request):

    if request.method == 'POST':

        form = CompanyForm(request.POST)

        if form.is_valid():

            f = CompanyForm(request.POST)
            f.save()

            return HttpResponseRedirect('/company/added/')

    else:
        form = CompanyForm()

    return render(request, 'form/formtemplate.html', {
        'form': form,
    })            

4

1 に答える 1