Ho scritto i miei primi modelli Django e volevo dare un'occhiata alla classe base estesa a tutti i modelli (esempio: "class Poll (models.Model") ma non ho trovato la classe base del Model. Ho controllato il source on github e quando ho sfogliato la directory django.db.models sono rimasto sorpreso di non trovare un file "Model.py" che potessi esaminare. È stato generato questo file? Oppure il modello di classe è da qualche altra parte? O è in corso un po 'di magia del pacchetto Python che io non sono a conoscenza?Dove si trova Model.py nel codice sorgente di Django?
risposta
Come è stato notato prima, Python non è Java. In particolare, non c'è niente in Python che dice che una classe deve vivere in un file con lo stesso nome della classe.
Come San4ez sottolinea, le Model
vive classe in django.db.models.base
, e viene importato nel file __init__.py
in quella directory in modo che possa fare riferimento direttamente come models.Model
. Questo non è un tipo di magia, solo normale idioma Python.
Tuttavia, una volta esaminato il codice per la classe stessa, scoprirete che in realtà consiste in un bel po 'di magia Python, in particolare nei metaclassi. Ma questa è una domanda diversa.
In https://github.com/django/django/blob/master/django/db/models/__init__.py
sguardo
from django.db.models.base import Model
.210
Così Model
classe è descritto ci https://github.com/django/django/blob/master/django/db/models/base.py
Letteralmente è possibile importare il modello in questo modo from django.db.models.base import Model
al progetto. Ma gli sviluppatori di core del django hanno deciso di nascondere alcune classi di servizio, importarne alcune nel pacchetto django.db.models
e offrirti di utilizzare l'importazione più breve.
- 1. Dove è definito jQuery.ajax nel codice sorgente di jQuery?
- 2. Refactor large model.py file nell'app Django
- 3. Dove si trova il codice sorgente per le funzioni PHP integrate?
- 4. Dove si trova LocalFileSystem.PERSISTENT?
- 5. GNU GSL dove trovo il codice sorgente?
- 6. Dove si trova System.Windows.Threading.DispatcherTimer?
- 7. Python/Django - Evita di salvare le password nel codice sorgente
- 8. Dove è implementato `+` per le stringhe nel codice sorgente Java?
- 9. Dove si trova Microsoft.WindowsAzure.Diagnostics?
- 10. Dove si trova il codice sorgente per Razor View Engine per ASP.NET MVC?
- 11. Dove si trova Boost.Process?
- 12. Dove si trova il codice sorgente per il browser Web Android?
- 13. Dove si trova il codice sorgente Java per vari pacchetti com.sun. * Su Leopard?
- 14. Dove si trova Microsoft.Deployment.WindowsInstaller?
- 15. Dove si trova MsDeployPublish?
- 16. Dove si trova "ListViewItemPlaceholderBackgroundThemeBrush"?
- 17. Dove si trova jarsigner?
- 18. Dove si trova tools.jar?
- 19. Dove si trova HttpContent.ReadAsAsync?
- 20. Dove si trova erase_if?
- 21. Dove si trova ImmutableArray?
- 22. Dove nel codice sorgente PHP c'è il codice per incrementare le stringhe?
- 23. Dove si trova la tabella di importazione nel file ELF?
- 24. Profiler Golang non trova il codice sorgente
- 25. Dove si trova GOTO: EOF?
- 26. Dove si trova la finestra di copertura del codice nel mio IntelliJ?
- 27. Dove si trova l'interprete Ruby?
- 28. //! [0] nel codice sorgente Qt
- 29. Dove si trova l'annotazione @Transactional?
- 30. CUDA cutil.h dove si trova?
L'ho trovato con il tuo aiuto (no grazie a github search). Questo mi porta ad alcune domande piuttosto filosofiche sulle convenzioni/stile/regole di Python, tuttavia questa è una domanda per un altro post (e dopo un po 'di ricerca di fondo è stata fatta anche questa). Grazie! –