Come faccio a fare riferimento a un Django impostazioni variabile nel mio models.py?

Questo è un principiante domanda. Ma sono perplesso. Come faccio a fare riferimento a un Django impostazioni variabile nel mio model.py?

NameError: name 'PRIVATE_DIR' is not defined

Provato anche un sacco di altre cose tra cui 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)

Qual è il modo corretto di fare questo?

InformationsquelleAutor codingJoe | 2011-10-23

 

2 Replies
  1. 230

    Prova con questo: from django.conf import settings poi
    settings.VARIABLE per accedere a tale variabile.

    • Grazie funziona se faccio riferimento con settings.VAR
    • Qualcosa di rilevante: se si dispone di più istanze di settings_something.py a causa di un progetto distribuito in diversi ambienti, non si tenta di importare da app.settings. Sovrascritto variabili in altri file non avrà effetto. Utilizzare sempre l’importazione citati in questa risposta. Mi ci sono voluti un paio d’ore per rendersi conto di quello che stava succedendo nel mio progetto.
    • Questo funziona, se è configurato correttamente: con la variabile di ambiente DJANGO_SETTINGS_MODULE o con manage.py parametro della riga di comando –impostazioni=.. per saperne di più docs: docs.djangoproject.com/en/2.0/topics/settings
    • VAR deve essere capitale di quest’ultimo altrimenti non funziona
  2. 77
    from django.conf import settings
    
    PRIVATE_DIR = getattr(settings, "PRIVATE_DIR", None)

    Dove si dice None, si sarà messo un valore di default nel caso la variabile non è definita nelle impostazioni.

Lascia un commento