У меня есть поле базы данных, в котором я хочу, чтобы значение required
зависело от некоторых параметров, хранящихся в базе данных. В качестве простого примера:Django 1.7 app registry: определение пустого/обязательного на основе запроса БД
class ModelSetting(models.Model):
key=models.CharField(unique=True)
value=models.BooleanField()
def get_setting(key):
return ModelSetting.objects.get(key=key).value
class MyModel(models.Model):
phone_number=models.CharField(required=get_setting("phone_required"))
Проблема заключается в том, что ModelSetting
определяется в совершенно другом модуле из MyModel
, поэтому я предполагаю, что во время импорта (когда phone_number
поля оценивается) ModelSetting
модель не доступна для использования , Это так? И есть ли возможное обходное решение?
django.core.exceptions.AppRegistryNotReady: Models aren't loaded yet.
Ах, я на самом деле имел в виду 'blank'. Верно ли, что Django будет запрашивать миграцию при изменении настроек базы данных? Когда я был на 1.6, это было не так. – benwad
Кроме того, некоторые из моих полей используют аналогичную технику для 'default'. Достаточно ли было бы проверить требуемые/пустые поля и заполнить значение по умолчанию в методе 'clean' модели? – benwad
Django 1.6 вообще не имеет миграций, поэтому вы не можете сравнить поведение с 1.7. Я уверен, что если вы измените 'blank' или' default' в Django 1.7, тогда будет предложено создать миграцию. – Alasdair