首页 > 编程问答 >Django 在哪里存储模型级变量

Django 在哪里存储模型级变量

时间:2024-07-26 08:29:41浏览次数:8  
标签:python django geodjango

所以我有我的模型:

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

相关文章