Pertanyaan Inline dalam ModelForm


Saya ingin membuat formulir untuk diisi oleh pengguna.

Bentuknya terdiri dari model Perusahaan, dan model Karyawan.

Saya ingin pengguna menambahkan satu perusahaan dan sebanyak mungkin Karyawan yang mereka inginkan, dalam satu formulir.

Di admin Django, fungsi ini mudah dicapai dengan StackedInline, tapi apa yang harus saya lakukan, untuk memiliki fungsi yang sama dalam bentuk publik saya?


#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,
    })            


11
2017-09-12 12:52


asal


Jawaban:


Formet sebaris adalah apa yang Anda butuhkan:

Formets inline adalah lapisan abstraksi kecil di atas formets model.   Ini mempermudah kasus bekerja dengan objek terkait melalui asing   kunci.

Lihat contoh di sini:

Semoga itu membantu.


7
2017-09-12 12:59