如何在Django中设置一个小部件来设置2个字段?

时间:2010-05-18 11:34:11

标签: django django-forms django-widget

我得到了一个包含2个字段的模型:纬度和经度。现在他们是2个CharFields,但是我想创建一个自定义小部件来设置它在管理员 - 考虑显示谷歌地图,然后获取标记的坐标。

但我可以设置1个小部件(单个地图)来设置2个不同的字段吗?

3 个答案:

答案 0 :(得分:2)

在表单上定义lat和long字段;将它们设置为使用HiddenInputWidget。

在表单初始化之后,添加另一个字段,其中包含带有两个值的自定义窗口小部件。

在添加字段的clean方法中,设置self.cleaned_data ['lat']和self.cleaned_data ['lng']

的值

可能有更简洁的方法,但它应该有效

答案 1 :(得分:1)

我使用了overriden full_clean方法进行数据分割。使用clean_FIELD方法为时已晚。

答案 2 :(得分:0)

我最终在我的管理员上设置了一个自定义表单,其中包含一个额外的非必需字段,该字段具有控制地图的小部件并设置像stevejalim这样的地图小部件。但是我没有隐藏输入字段,因为它们仍然留在视图中,我不介意看到它们。覆盖用于编辑该模型的模板并放入地图可能会更清晰,但这似乎对于应该简单的事情有很多作用。

一个解决方案是,如果Django允许复杂的模型字段,其中一个模型字段对应多个数据库列,但尚不支持(参见https://code.djangoproject.com/ticket/5929

另一个是如果Django让我们使用对应于两个模型字段的表单字段,但似乎没有办法实现它,我找不到它的票。