Мне нравится помещать все константы в файл constants.py внутри каждого приложения. Когда мы хотим, чтобы между приложениями были какие-то глобальные варианты, мы помещаем их в «основное» приложение (как описано в описании @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',)