所以我有我的模型:
from django.db import models
x_default_coordinate = 0
y_default_coordinate = 0
class Model(models.Model):
location1 = gis_models.PointField(
srid=4326, default=Point(x_default_coordinate, y_default_coordinate)
)
location2 = gis_models.PointField(
srid=4326, default=Point(x_default_coordinate, y_default_coordinate)
)
哪里是存储默认坐标的合适位置?目前我已经如图所示,但这似乎不正确。
将模型级别的默认值存储在 Django 模型定义之外通常是一个好习惯。这可以提高可读性和可维护性。对于你的情况,你有几个选择:
1. 使用函数作为默认值:
这提供了一种干净且可读的方式来封装默认逻辑:
```python from django.db import models from django.contrib.gis.db import models as gis_models from django.contrib.gis.geos import Point
def get_default_coordinates(): return Point(0, 0) # 或者任何你想要的逻辑
class Model(models.Model): location1 = gis_models.PointField( srid=4326, default=get_default_coordinates ) location2 = gis_models.PointField( srid=4326, default=get_default_coordinates ) ```
2. 使用模型
Meta
类中的常量:
如果默认值特定于模型,则此选项是一个不错的选择:
```python class Model(models.Model): class Meta: DEFAULT_COORDINATES = Point(0, 0)
location1 = gis_models.PointField(
srid=4326, default=Meta.DEFAULT_COORDINATES
)
location2 = gis_models.PointField(
srid=4326, default=Meta.DEFAULT_COORDINATES
)
```
3. 使用单独的配置文件:
对于更广泛使用的默认值,请考虑将它们存储在一个单独的配置文件中。这将使它们集中化并且易于在必要时进行修改:
python
# config.py
DEFAULT_COORDINATES = (0, 0)
```python from django.db import models from django.contrib.gis.db import models as gis_models from django.contrib.gis.geos import Point from . import config
class Model(models.Model): location1 = gis_models.PointField( srid=4326, default=Point( config.DEFAULT_COORDINATES) ) location2 = gis_models.PointField( srid=4326, default=Point( config.DEFAULT_COORDINATES) ) ```
这些方法中的每一种都提供了一种组织良好且可维护的方式来处理 Django 模型中的模型级默认值。选择最适合你特定需求和项目结构的那个。
标签:python,django,geodjango From: 78795840