Как обновить модель GeoDjango с полями области
Вот модель:
from django.contrib.gis.db import models
class City(models.Model):
mpoly = models.MultiPolygonField()
area = models.IntegerField(null=True)
Я хочу обновить все записи сразу, чтобы установить область. Я пробовал :
from django.contrib.gis.db.models.functions import Area, Transform
City.objects.all().update(area=Area(Transform("mpoly", 2154)))
Что приводит к ошибке "DataError: значение слишком длинное для типа character varying(8)"...
У вас есть элегантная фраза для этого?
Собственно говоря, моя проблема заключалась в том, что я пытаюсь поместить большое число в поле char (из 8 символов). Приведенный пример и ошибка не связаны.
Чтобы заставить его работать с предоставленной моделью :
from django.contrib.gis.db.models.functions import Area, Transform
from django.db.models import IntegerField
from django.db.models.functions import Cast
City.objects.all().update(area=Cast(Area(Transform("mpoly", 2154)), IntegerField()))