我得到了一个包含2个字段的模型:纬度和经度。现在他们是2个CharFields,但是我想创建一个自定义小部件来设置它在管理员 - 考虑显示谷歌地图,然后获取标记的坐标。
但我可以设置1个小部件(单个地图)来设置2个不同的字段吗?
答案 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让我们使用对应于两个模型字段的表单字段,但似乎没有办法实现它,我找不到它的票。