1
0
mirror of https://github.com/django/django.git synced 2025-06-18 01:49:14 +00:00
Simon Charette d9bf0d07cc [5.2.x] Fixed #36289 -- Fixed bulk_create() crash with nullable geometry fields on PostGIS.
Swapped to an allow list instead of a deny list for field types to
determine if the UNNEST optimization can be enabled to avoid further
surprises with other types that would require further specialization to
adapt.

Regression in a16eedcf9c69d8a11d94cac1811018c5b996d491.

Thanks Joshua Goodwin for the report and Sarah Boyce for the test.

Backport of 764af7a3d6c0b543dcf659a2c327f214da768fe4 from main
2025-04-04 21:33:55 +02:00

76 lines
1.5 KiB
Python

from django.contrib.gis.db import models
class NamedModel(models.Model):
name = models.CharField(max_length=30)
class Meta:
abstract = True
def __str__(self):
return self.name
class City3D(NamedModel):
point = models.PointField(dim=3)
pointg = models.PointField(dim=3, geography=True)
class Meta:
required_db_features = {"supports_3d_storage"}
class Interstate2D(NamedModel):
line = models.LineStringField(srid=4269)
class Interstate3D(NamedModel):
line = models.LineStringField(dim=3, srid=4269)
class Meta:
required_db_features = {"supports_3d_storage"}
class InterstateProj2D(NamedModel):
line = models.LineStringField(srid=32140)
class InterstateProj3D(NamedModel):
line = models.LineStringField(dim=3, srid=32140)
class Meta:
required_db_features = {"supports_3d_storage"}
class Polygon2D(NamedModel):
poly = models.PolygonField(srid=32140)
class Polygon3D(NamedModel):
poly = models.PolygonField(dim=3, srid=32140)
class Meta:
required_db_features = {"supports_3d_storage"}
class SimpleModel(models.Model):
class Meta:
abstract = True
class Point2D(SimpleModel):
point = models.PointField(null=True)
class Point3D(SimpleModel):
point = models.PointField(dim=3)
class Meta:
required_db_features = {"supports_3d_storage"}
class MultiPoint3D(SimpleModel):
mpoint = models.MultiPointField(dim=3)
class Meta:
required_db_features = {"supports_3d_storage"}