我正在使用ManyToMany字段自定义表单
MODELS.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,
)
VIEWS.PY
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()
这样,我可以成功添加新模块,但是没有创建 module_menu_item 。
在 POST 上的值是:
module_menu_item_id {…}
0 28
1 22
2 27
3 25
因此,在一篇文章中,需要为模块和菜单项创建多个关系
注意:我不在模板中使用基于默认模型的表单
答案 0 :(得分:0)
您还需要调用save_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()
在docs中查看详细信息。