在后期django视图上保存自定义多个表单

在后期django视图上保存自定义多个表单,django,Django,我正在用许多字段填写自定义表单 型号.PY class Module(models.Model): class Meta(): db_table = "module" verbose_name = "Module" verbose_name_plural = "Modules" module_title = models.CharField( verbose_name="Module title",

我正在用许多字段填写自定义表单

型号.PY

class Module(models.Model):
    class Meta():
        db_table = "module"
        verbose_name = "Module"
        verbose_name_plural = "Modules"

    module_title = models.CharField(
        verbose_name="Module title",
        max_length=200,
        blank=False,
        null=False,
    )
    module_menu_item = models.ManyToManyField(
        'mega_admin.MenuItem',
        blank=True,
        null=True,
    )
module_menu_item = request.POST.getlist('menu_item_menu', '')
save_module_form = ModuleForm(request.POST)

if save_module_form.is_valid():
    module = save_module_form.save(commit=False)
    module.module_title = module_title
    module.module_menu_item = module_menu_item
    save_module_form.save()
视图.PY

class Module(models.Model):
    class Meta():
        db_table = "module"
        verbose_name = "Module"
        verbose_name_plural = "Modules"

    module_title = models.CharField(
        verbose_name="Module title",
        max_length=200,
        blank=False,
        null=False,
    )
    module_menu_item = models.ManyToManyField(
        'mega_admin.MenuItem',
        blank=True,
        null=True,
    )
module_menu_item = request.POST.getlist('menu_item_menu', '')
save_module_form = ModuleForm(request.POST)

if save_module_form.is_valid():
    module = save_module_form.save(commit=False)
    module.module_title = module_title
    module.module_menu_item = module_menu_item
    save_module_form.save()
这样我可以成功地添加新模块,但是没有创建模块菜单项

POST上,值为:

module_menu_item_id {…}
0   28
1   22
2   27
3   25
因此,在一篇文章中,需要为模块和菜单项创建多个关系


注意:我没有在模板中使用默认的基于模型的表单

您需要调用
save\u m2m
方法来保存相关项目:

if save_module_form.is_valid():
    module = save_module_form.save(commit=False)
    module.module_title = module_title
    module.module_menu_item = module_menu_item
    module.save()
    save_module_form.save_m2m()
请参阅中的详细信息