Django の models で multiPolygonField を作る ( mysql )

参考

ライブラリをインストールする

gdal をインストールする。

apt install -y libgdal-dev

設定ファイルを変更する

INSTALLED_APPS に 'django.contrib.gis' を追加する。

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'django.contrib.sites',
    'django.contrib.gis', # 追加
    'app',
]

DATABASES の ENGINE を 'django.contrib.gis.db.backends.mysql' に変更する。

DATABASES = {
    'default': {
        ...
        'ENGINE': 'django.contrib.gis.db.backends.mysql',
        ...
    }
}

モデルを作成する

モデルに MultiPolygonField を指定する。

from django.contrib.gis.db import models
class Polygon(models.Model):
    name = models.CharField(max_length=50, null=True)
    multi_polygon = models.MultiPolygonField()

確認する

テーブルのスキーマを確認する。

mysql> SHOW COLUMNS FROM app_polygon;
+---------------+--------------+------+-----+---------+----------------+
| Field         | Type         | Null | Key | Default | Extra          |
+---------------+--------------+------+-----+---------+----------------+
| id            | int(11)      | NO   | PRI | NULL    | auto_increment |
| name          | varchar(50)  | YES  |     | NULL    |                |
| multi_polygon | multipolygon | NO   | MUL | NULL    |                |
+---------------+--------------+------+-----+---------+----------------+
3 rows in set (0.00 sec)