mirror of
				https://github.com/django/django.git
				synced 2025-10-31 09:41:08 +00:00 
			
		
		
		
	There's no problem creating the models on MySQL and Oracle (which don't support 3D storage) but CockroachDB currently crashes with a syntax error.
		
			
				
	
	
		
			77 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			77 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()
 | |
| 
 | |
| 
 | |
| 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'}
 |