He estado escribiendo mis primeros modelos de Django y quería echar un vistazo a la clase base que se extienden todos los modelos (ejemplo: "class Poll (models.Model") pero no pude encontrar la clase base Model. Comprobé source on github y cuando busqué en el directorio django.db.models, me sorprendí al no encontrar un archivo "Model.py" que pudiera ver. ¿Se genera este archivo? ¿O la clase Model vive en otro lado? ¿O hay algún paquete de Python pasando magia? que no estoy familiarizado con?¿Dónde está Model.py en el código fuente de Django?
Respuesta
Como se ha comentado anteriormente, Python no es Java. En particular, no hay nada en Python que diga que una clase tiene que vivir en un archivo con el mismo nombre que la clase.
Como San4ez señala, las vidas de clase Model
en django.db.models.base
, y se importa en el archivo __init__.py
en ese directorio para que se pueda hacer referencia directamente como models.Model
. Esto no es ningún tipo de magia, solo Python idiomático normal.
Sin embargo, una vez que observe el código de la clase en sí, encontrará que realmente contiene bastante magia de Python, específicamente en torno a las metaclases. Pero esa es una pregunta diferente.
En https://github.com/django/django/blob/master/django/db/models/__init__.py
mirada
from django.db.models.base import Model
Así Model
clase está descrito allí https://github.com/django/django/blob/master/django/db/models/base.py
Literalmente puede importar modelo de esta manera from django.db.models.base import Model
a su proyecto. Pero los desarrolladores de django core decidieron ocultar algunas clases de servicio, importar algunas al paquete django.db.models
y ofrecerle una importación más corta.
- 1. Dónde está el código fuente para Html.TextBoxFor
- 2. ¿dónde está el código fuente de C++ filt?
- 3. ¿Dónde está el código fuente del navegador web de Android?
- 4. ¿Dónde está el código fuente del compilador de Java?
- 5. ¿Dónde está el código fuente del tipo python 'dict'?
- 6. ¿Dónde encontrar el código fuente de BitTorrent?
- 7. Dónde está el repositorio fuente mercurial.hg
- 8. Dónde está gnu lib math (libm) código fuente
- 9. ¿Dónde se define jQuery.ajax en el código fuente jQuery?
- 10. ¿Dónde está el código fuente de Java para varios paquetes com.sun. * En Leopard?
- 11. ¿Dónde está el código fuente del visor de PDF nativo en Google Chrome?
- 12. ¿dónde está el código fuente de la biblioteca estándar en ocaml?
- 13. ¿Dónde está el código fuente de pypi, el índice del paquete Python?
- 14. Hudson "El código fuente no está disponible."
- 15. ¿Dónde está el código fuente de la extensión de idioma de GHC: "Flechas"?
- 16. ¿Dónde puedo encontrar el código fuente de System.Numerics.BigInteger?
- 17. ¿Dónde en la fuente PHP está el código para incrementar las cadenas?
- 18. ¿Dónde se descarga el código fuente de Linux?
- 19. ¿Dónde puedo encontrar el código fuente de Flex?
- 20. ¿De dónde puedo encontrar el código fuente del comando cp?
- 21. ¿Dónde encontrar el código fuente JSSE/JCE de Java 6?
- 22. Amigo, ¿dónde está mi instalación de Django?
- 23. ¿Dónde comenzar a leer el código fuente de SQLite?
- 24. ¿Dónde puedo descargar el código fuente de "OpenGL"?
- 25. Dónde comenzar con el control de código fuente
- 26. ¿Dónde poner el código de inicio de Django?
- 27. ¿Cómo/dónde comenzar a leer el código fuente abierto?
- 28. ¿Dónde puedo encontrar el código fuente JDK 1.5?
- 29. ¿Dónde debería estar el código del administrador de django?
- 30. ¿Dónde obtener el código fuente completo para rt.jar?
Lo encontré con su ayuda (no gracias a la búsqueda de github). Esto me lleva a algunas preguntas bastante filosóficas sobre las convenciones/estilo/reglas de Python, sin embargo, esa es una pregunta para otra publicación (y después de un poco de investigación de fondo también se ha hecho). ¡Gracias! –