所以我试图在django中为模型添加一个点字段,如下所示:
class Location(models.Model):
lat = models.FloatField(blank=True, null=True)
lng = models.FloatField(blank=True,null=True)
geometry = models.PointField(srid=4326,default='POINT(0.0,0.0)')
objects = models.GeoManager()
我已经有了许多具有lat lng坐标的位置的数据库,但他们不需要点域。我收到此错误django.db.utils.IntegrityError: column "geometry" contains null values
我设置了默认设置,但是当我运行&py; manage.py migrate'时,它仍然会给我错误。我该如何解决这个问题?
答案 0 :(得分:0)
default
不会更改数据库中的旧行(迁移前存在的旧行)。您应该将geometry
字段设置为可为空,然后进行迁移。迁移后,您可以使用默认值填写空值并删除null=True
或保持原样
<强>更新强>
基于此post,PointField
似乎不可能是null
(即使它被指定为真正研磨我的齿轮......)。 GIVEN你的模型不需要改变,但它看起来不像django可以为你处理这个超级好。
我看到两个选项(可能存在更好的选项)
这些似乎都不理想,但谷歌还没有向我展示更好的方式