后地理不支持"~="功能/运算符



我试图通过update_or_create方法在数据库中保存点字段,但它给了我这个错误。

我保存数据的功能:

for city in cities_data:
obj, created = models.City.objects.update_or_create(
name = city["name"],
country = city["country"],
state = city["state"],
point = Point(
float(city["longitude"]),
float(city["latitude"])   
),
radius = city["radius"],
is_curated = city["is_curated"],
is_metro_city = city["is_metro_city"]
)
obj.save()

型号:

class City(models.Model):
name = models.CharField(max_length=50)
country = models.CharField(max_length=50)
state = models.CharField(max_length=50)
point = gis_models.PointField(geography=True, null=True)
is_metro_city = models.BooleanField(default=False)
is_curated = models.BooleanField(default=False)
radius = models.IntegerField(null=True)

当我尝试运行这个时,我得到了这个错误:

ValueError: PostGIS geography does not support the "~=" function/operator.

我想知道为什么我会出现这个错误,我没有找到任何与此相关的有用信息。提前感谢。

如果你想使用它,你可以这样使用:

obj, created = models.City.objects.update_or_create(
**city_data,
defaults={'point': Point(
float(city["longitude"]),
float(city["latitude"])   
)}
)

我不知道为什么它不起作用,但我让它起作用的方式,如果你发现它为什么不起作用你可以改进答案。

我有同样的错误,问题是我在模型的类Meta中有一个唯一的together约束,例如:

class Meta:
unique_together = 'name', 'geom'

删除后,错误会消失,尽管您必须自己检查是否需要这样的约束。

最新更新