通过表单创建模型关系

时间:2014-01-14 12:27:55

标签: django

通过前端形式在Django中创建模型关系的实际方法是什么? 例如,用户使用表单注册服务,他们开始引用。 在获得报价时,他们可以选择产品并将其添加到报价中,指定变量,例如此过程中的尺寸。

这是使用相关的用户,报价,产品模型和相关关系建模的。

我正在努力找出通过前端表单和视图将这些链接在一起的最佳方式。

我是否会在报价表中加载相关user_id的隐藏字段,然后我可以手动处理以形成一对多关系。

我只是想知道这是否是表格中的内容,或者我是否必须手动创建表单以实现我的目标。

1 个答案:

答案 0 :(得分:0)

这是尝试和实现的更复杂的事情之一,但Django中有几件事可以帮助你。

您需要在Quote模型上使用ManyToMany field将产品链接到它。

这可以通过ModelMultipleChoiceField简单地以表格形式显示:
https://docs.djangoproject.com/en/dev/ref/forms/fields/#modelmultiplechoicefield
...它只是呈现现有产品的基本多选列表。

您想要的界面可能看起来更像是inline formset。这里的复杂之处在于它们是为ForeignKey关系设计的,而不是ManyToMany

在封面下,ManyToMany关系实际上只是两个ForeignKey关系,通过一个中间的'through'模型。我们可以利用它在直通模型上构建一个内联formset,看看这个答案:
https://stackoverflow.com/a/10999074/202168

您会注意到该答案中的警告,除非您覆盖某些代码,否则内联行将不知道它们属于哪个Quote

您可能希望查看一些为ManyToMany字段提供自定义小部件的帮助应用程序: