2011-10-23 10 views
66

Esta es una pregunta para principiantes. Pero estoy perplejo. ¿Cómo hago referencia a una variable de configuración de django en mi model.py?¿Cómo hago referencia a una variable de configuración de django en mi models.py?

NameError: nombre 'PRIVATE_DIR' no está definido También probamos un montón de otras cosas incluyendo settings.PRIVATE_DIR

Cuál es la forma correcta de hacer esto?

--------- ------------- settings.py

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

--------- model.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) 
+6

'from django.conf import settings' - https://docs.djangoproject.com/en/dev/topics/settings/#using-settings-in-python-code – birryree

Respuesta

143

intento con esto: from django.conf import settings

+16

Gracias, funciona si hago referencia con' configuraciones .VAR' – codingJoe

+6

Algo relevante: si tiene varias instancias de 'settings_something.py' debido a un proyecto implementado en varios entornos, no intente importar desde' app.settings'. Las variables sobreescritas en los demás archivos no tendrán efecto. Use siempre la importación mencionada en esta respuesta. Me llevó unas horas darme cuenta de lo que estaba pasando en mi proyecto. –

+0

Esto funciona, si está configurado correctamente: con la variable de entorno DJANGO_SETTINGS_MODULE o con el parámetro de línea de comando manage.py --settings = .. Más información en documentos: https://docs.djangoproject.com/en/2.0/topics/settings / – mirek

54
from django.conf import settings 

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

Donde dice None, le pondrá un valor por defecto en caso que no se define la variable en la configuración de.

Cuestiones relacionadas