Я хочу иметь константы экземпляров модели. Упрощенный, это выглядит следующим образом:Константы экземпляра модели Django
class MyModel(models.Model):
codename = models.CharField(max_length=50, unique=True)
constant1 = MyModel.objects.get_or_create(codename="cool")
Конечно, я не могу сделать это так просто, потому что этот код будет делать попытку поместить данные в базе данных до того, как миграции сделаны, или это не получится, потому что «модели не загружаются» в какой-то момент и т. д. Но я действительно хочу иметь такие константы, потому что я считаю это удобным для импорта.
Очевидное решение проблемы для меня - это сделать функцию, например «def constant1(): ...» или «def get_constant1(): ...», которая будет делать то же самое, но никогда не вызовет никаких проблем на этапе миграции.
Но я хочу, чтобы получить доступ к своему «constant1» как переменной (что-то = constant1), а не как функцию (что-то = constant1())
Пожалуйста, скажите мне, есть ли правильный способ реализации такие константы, или я должен сдаться?
Зачем это нужно делать в одном файле? – user2507
Это не * постоянный *, это было бы - наилучшим образом - хорошо известный объект *, но его все равно вытащили из базы данных. По существу: заполните базу данных с помощью [начальных данных] (https://docs.djangoproject.com/en/1.10/howto/initial-data/) и предоставьте способ запроса для известных объектов. Ваш 'constant1' будет отражать объект так, как это было бы в то время, когда была определена константа, а не в то время, когда вы будете использовать объект ... получайте удовольствие от отладки. – dhke
@ dhke Конечно, я в порядке. Это вполне ожидаемое поведение. – LOMS