This is a very beginner question. But I'm stumped. How do I reference a Django settings variable in my model.py?
NameError: name 'PRIVATE_DIR' is not defined
Also tried a lot of other stuff including 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)
What's the correct way to do this?
from django.conf import settings
- docs.djangoproject.com/en/dev/topics/settings/…
Try with this: from django.conf import settings
then settings.VARIABLE
to access that variable.
VARIABLE should be in capital letter. It will not work otherwise.
from django.conf import settings
PRIVATE_DIR = getattr(settings, "PRIVATE_DIR", None)
Where it says None
, you will put a default value incase the variable isn't defined in settings.
Success story sharing
settings_something.py
due to a project deployed in several environments, do not try to import fromapp.settings
. Overwritten variables in the other files won't take effect. Always use the import mentioned in this answer. It took me a few hours to realize what was going on in my project.