Как мне ссылаться на переменную настроек Django в моем models.py ?

#django #django-models #django-settings

#django #django-модели #django-настройки

Вопрос:

Это вопрос для начинающих. Но я в тупике. Как мне ссылаться на переменную настроек Django в моем model.py ?

 NameError: name 'PRIVATE_DIR' is not defined
 

Также пробовал много других вещей, в том числе settings.PRIVATE_DIR

settings.py:

 PRIVATE_DIR = '/home/me/django_projects/myproject/storage_dir'
 

models.py:

 # Problem is here.
from django.core.files.storage import FileSystemStorage

fs = FileSystemStorage(location=PRIVATE_DIR)

class Customer(models.Model): 
    lastName = models.CharField(max_length=20) 
    firstName = models.CharField(max_length=20) 
    image = models.ImageField(storage=fs, upload_to='photos', blank=True, null=True)
 

Каков правильный способ сделать это?

Комментарии:

1. from django.conf import settings docs.djangoproject.com/en/dev/topics/settings /…

Ответ №1:

Попробуйте с этим: from django.conf import settings затем settings.VARIABLE получить доступ к этой переменной.

ПЕРЕМЕННАЯ должна быть написана заглавной буквой. Иначе это не сработает.

Комментарии:

1. Что-то важное: если у вас есть несколько экземпляров settings_something.py due to проекта, развернутого в нескольких средах, не пытайтесь импортировать из app.settings . Перезаписанные переменные в других файлах не вступят в силу. Всегда используйте импорт, упомянутый в этом ответе. Мне потребовалось несколько часов, чтобы понять, что происходит в моем проекте.

2. Это работает, если оно правильно настроено: с переменной среды DJANGO_SETTINGS_MODULE или с manage.py параметр командной строки —настройки=.. Подробнее читайте в документах: docs.djangoproject.com/en/2.0/topics/settings

3. VAR должен быть прописным последним, иначе он не будет работать

4. Спасибо. Потребовалось много времени, чтобы разобраться в этом. 🙂

Ответ №2:

 from django.conf import settings

PRIVATE_DIR = getattr(settings, "PRIVATE_DIR", None)
 

Там, где указано None , вы будете указывать значение по умолчанию, если переменная не определена в настройках.