django - 在 ModelForm 中内联

标签 django django-forms

我想创建一个表格供用户填写。

该表单由一个公司模型和一个员工模型组成。

我希望用户以一种形式添加一家公司和他们想要的尽可能多的员工。

在 django admin 中,使用 StackedInline 很容易实现此功能,但我需要做什么才能在我的公共(public)表单中拥有相同的功能?

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

最佳答案

Inline formsets是你需要的:

Inline formsets is a small abstraction layer on top of model formsets. These simplify the case of working with related objects via a foreign key.



请参阅此处的示例:
  • Creating a model and related models with Inline formsets

  • 希望有帮助。

    关于django - 在 ModelForm 中内联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18764880/

    相关文章:

    python - 从 View 导入数据后如何将下拉数据分配给字段

    python - Django Rest Framework - 处理 API 参数验证错误的最佳方法?

    Python 在新实例中缓存以前的对象属性

    Django - 如何在 ManyToMany 字段查询集上设置默认排序

    python - 在 django 中向管理员显示多个选择

    python - Django 表单的赞成票和反对票按钮

    python - 类型错误 : unsupported operand type(s) for +: 'int' and 'NoneType' return length

    django - 使用 MAMP 在 Mac OS X 10.6 Snow Leopard 上安装 MySQLdb for Django

    django - 使用 django-angular 和 django-bootstrap3

    django - 访问表单集中的多对多 "through"关系字段