我得到了一个包含 2 个字段的模型:纬度和经度。现在它们是 2 个 CharFields,但我想制作一个自定义小部件以在管理员中设置它 - 正在考虑显示谷歌地图,然后获取标记的坐标。
但是我可以有 1 个小部件(一个地图)来设置 2 个不同的字段吗?
我得到了一个包含 2 个字段的模型:纬度和经度。现在它们是 2 个 CharFields,但我想制作一个自定义小部件以在管理员中设置它 - 正在考虑显示谷歌地图,然后获取标记的坐标。
但是我可以有 1 个小部件(一个地图)来设置 2 个不同的字段吗?
在表单上定义经纬度字段;将它们设置为使用 HiddenInputWidget。
在您的表单初始化之后,添加另一个包含您的自定义小部件的字段,该小部件采用两个值。
在该添加字段的 clean 方法中,设置 self.cleaned_data['lat'] 和 self.cleaned_data['lng'] 的值
可能有更清洁的方法,但它应该工作
我已经使用覆盖full_clean
方法进行数据拆分。使用clean_FIELD
方法为时已晚。
我最终在我的管理员上设置了一个自定义表单,其中包含一个额外的非必填字段,该字段具有一个控制地图的小部件,并设置了一个类似 stevejalim 的地图小部件。但是我没有隐藏输入字段,因为它们仍然留在视图中,我不介意看到它们。覆盖模板以编辑该模型并放入地图可能会更干净,但这对于应该简单的事情似乎有很多工作。
一种解决方案是,如果 Django 允许复杂模型字段,其中一个模型字段对应于多个 db 列但尚不支持(请参阅https://code.djangoproject.com/ticket/5929)
另一种是如果 Django 允许我们使用对应于两个模型字段的表单字段,但似乎没有办法实现这一点,而且我找不到它的票。