也许我会采用一种糟糕的方法,但假设这种通用场景:
我有博客有评论 . 博客页面包含用于创建评论的表单 . 注释有一个ModelForm,实际的HTML是有选择地完成的 . 外键当然不可见或呈现 . 提交时,评论的外键需要与博客相关联 .
如果我使用注释ModelForm的博客外键初始化,它不会在POST中持久存在 . 有意义,因为它不在表单标签中 .
我可以在POST之后在形式调用的视图中附加它,但ModelForm(request.POST).data不可变 . 我可以做ModelForm(request.POST).save(commit = False),但这意味着评论的模型的博客外键可能是空白的,从模型的角度来看,这没有任何意义 .
这样做的正确方法是什么?看起来像一个非常标准的用法 .
谢谢
2 回答
这是另一种方式:
我假设您的视图知道它正在处理哪个Blog实例 .
这是执行此操作的标准方法 . 是的,您的评论实例的博客外键很短时间内是无,但只要您不保存它就无关紧要(或者在FK定义中设置为null = True) . commit = False意味着它没有命中数据库,这就是你必须稍后手动保存注释的原因 .