在我的模型中,我在某些字段中使用choices
选项。但我在Django项目中的多个应用程序中使用相同的选项。
我应该在哪里做出选择,如何在我的所有应用中加载这些选项?
答案 0 :(得分:3)
我们这里每个项目通常都有不少项目专用应用程序,为了让依赖项保持合理清洁,我们通常会再增加两个应用程序:
“核心”,其中我们将其他应用程序共享的内容(任何应用程序都可以依赖于“核心”,“核心”不依赖于任何应用程序),
和“main”将事物联系在一起(“主要”可以取决于任何应用程序,不允许应用程序依赖“主要”)。
在您的情况下,这些共享选项属于core.models
。
答案 1 :(得分:2)
我喜欢将所有常量放在每个应用程序中名为constants.py的文件中。当我们想要在应用程序之间共享某种全局选择时,我们将它们放入"核心" app(如@bruno desthuilliers描述的那样)并在需要时导入它们。
示例:
constants.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')
)
any_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',)
答案 2 :(得分:0)
这个问题有几个解决方案:
按一对多设置选项,然后您可以按型号
访问选项...
您也可以将这些方式混合在一起:)