Python 在Django应用程序之间共享选择
在我的模型中,我在一些字段中使用了Python 在Django应用程序之间共享选择,python,django,Python,Django,在我的模型中,我在一些字段中使用了选项。但我在Django项目的多个应用程序中使用相同的选项 我应该将我的选择放在哪里,如何在我的所有应用程序中加载这些选择?此问题有几种解决方案: 将您的选择放在设置文件中,并在应用程序中获取这些值 在“确定应用程序或模型”中设置常量,并按onwer名称确定访问选项 将选项项设置为一对多,然后可以按模型访问选项 此外,您还可以混合使用以下方法:)我们通常在每个项目中都有相当多的特定于项目的应用程序,为了尽量保持依赖关系合理干净,我们通常还有两个应用程序:
选项
。但我在Django项目的多个应用程序中使用相同的选项
我应该将我的选择放在哪里,如何在我的所有应用程序中加载这些选择?此问题有几种解决方案:
此外,您还可以混合使用以下方法:)我们通常在每个项目中都有相当多的特定于项目的应用程序,为了尽量保持依赖关系合理干净,我们通常还有两个应用程序:
- “核心”,我们将其他应用程序共享的东西放在其中(任何应用程序都可以依赖于“核心”,“核心”不依赖于任何应用程序)
- 和“main”,将事物联系在一起(“main”可以依赖于任何应用程序,任何应用程序都不允许依赖于“main”)
在您的情况下,这些共享选择将属于
core.models
我喜欢将所有常量放在每个应用程序中名为constants.py的文件中。当我们希望在应用程序之间共享某种全局选择时,我们将它们放在“核心”应用程序中(如@bruno desthuilliers所述),并在需要时导入它们
例如:
常数.py
# -*- coding: utf-8 -*-
STATE_1 = 0
STATE_2 = 1
STATE_3 = 2
STATE_CHOICES = (
(STATE_1, 'STATE 1'),
(STATE_2, 'STATE 2'),
(STATE_3, 'STATE 3')
)
任何_app/models.py
from django.db import models
from other.app.models import User
from core.constants import SOME_OTHER_CHOICES
from core.constants import STATE_1_REAL
from .constants import STATE_CHOICES
from .constants import STATE_1
class ModelX(models.Model):
user = models.ForeignKey(User)
state = models.IntegerField(verbose_name=u'state',
choices=STATE_CHOICES,
default=STATE_1)
core_state = models.IntegerField(verbose_name=u'real state',
choices=SOME_OTHER_CHOICES,
default=STATE_1_REAL)
class Meta:
ordering = ('-state',)