You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
@@ -1264,7 +1269,7 @@ from django.db import models
1264
1269
1265
1270
1266
1271
class Comment(models.Model):
1267
-
content = models.TextField(max_length=256)
1272
+
content = models.TextField()
1268
1273
post = models.ForeignKey(
1269
1274
'posts.Post',
1270
1275
related_name='comments',
@@ -1389,7 +1394,7 @@ erDiagram
1389
1394
Como se puede observar, se trata de una relación `1:1` por lo que vamos a utilizar la clase [`OneToOneField()`](#one-to-one) que proporciona Django. La implementación sería la siguiente:
1390
1395
1391
1396
```python title="users/models.py" hl_lines="6-10"
1392
-
from django import models
1397
+
from django.dbimport models
1393
1398
from django.conf import settings
1394
1399
1395
1400
@@ -1853,15 +1858,18 @@ Las dos opciones de las que disponemos son [`FileField`](https://docs.djangoproj
1853
1858
1854
1859
Vamos a partir de un <span class="example">ejemplo:material-flash:</span> en el que modelamos un «post» añadiendo una imagen de _portada_. Para ello añadimos un nuevo campo `cover` al modelo que será de tipo `ImageField`:
Analicemos cada parámetro de `ImageField` por separado:
@@ -1896,7 +1904,7 @@ Analicemos cada parámetro de `ImageField` por separado:
1896
1904
1897
1905
### Ruta del fichero { #file-field-path }
1898
1906
1899
-
Django ofrece la posibilidad de modificar la configuración [`settings.MEDIA_ROOT`](https://docs.djangoproject.com/en/stable/ref/settings/#std-setting-MEDIA_ROOT) para indicar la ruta «base» donde se va a almacenar este tipo de valores en el **sistema de ficheros**.
1907
+
Django ofrece la posibilidad de modificar la configuración [`settings.MEDIA_ROOT`](https://docs.djangoproject.com/en/stable/ref/settings/#std-setting-MEDIA_ROOT) para indicar la ruta «base» donde se van a almacenar este tipo de recursos en el **sistema de ficheros**.
1900
1908
1901
1909
Suele ser una **buena práctica** establecer `#!python '/media'` como la carpeta para la subida de ficheros:
1. `BASE_DIR` es una variable definida al comienzo de `settings.py` y que contiene la **ruta absoluta** a la raíz de nuestro proyecto Django.
1909
1917
1910
-
Por tanto, si subimos un fichero `#!python 'tech.png'` como portada de un «post», la ruta en el sistema de ficheros donde se guardará será `<project-path>/media/covers/tech.png`.
1918
+
Por tanto, si subimos un fichero `#!python 'tech.jpg'` como portada de un «post», la ruta en el sistema de ficheros donde se guardará (partiendo del raíz del proyecto) será:
1919
+
1920
+
``` title="blog"
1921
+
media
1922
+
└── covers
1923
+
└── tech.jpg
1924
+
```
1911
1925
1912
1926
!!! note "Ruta en disco"
1913
1927
1914
1928
Dado un objeto `post` de tipo `Post` podemos acceder a la ^^ruta en disco^^ de su fichero de portada mediante `post.cover.path`.
1915
1929
1916
1930
### URL del fichero { #file-field-url }
1917
1931
1918
-
Supongamos un <span class="example">ejemplo:material-flash:</span> en el que pasamos un objeto `post` de tipo `Post` a una plantilla para renderizar su contenido. El acceso a la URLdelfichero es muy sencillo:
1932
+
Supongamos un <span class="example">ejemplo:material-flash:</span> en el que pasamos un objeto `post` de tipo `Post` a una plantilla para renderizar su contenido. El acceso a la URLde la portada del«post» es muy sencillo:
Si subimos un fichero `#!python 'tech.png'` como portada de un «post», la ^^URL de acceso^^ será `#!python http://<project-domain>/media/covers/tech.png`.
1953
+
Si subimos un fichero `#!python 'tech.jpg'` como portada de un «post», la ^^URL de acceso^^ será: `#!python http://localhost:8000/media/covers/tech.jpg`.
1940
1954
1941
1955
### Servidor de desarrollo { #file-fields-devserver }
1942
1956
@@ -1966,7 +1980,7 @@ Una de las operaciones más habituales cuando manejamos `FileField` o `ImageFiel
1966
1980
1967
1981
#### Gestión del formulario { #file-uploads-form }
1968
1982
1969
-
En este caso vamos a poner un<span class="example">ejemplo:material-flash:</span> de añadir un «post» utilizando un [formulario de modelo](forms.md#model-forms) para ello:
1983
+
En este caso vamos a poner el<span class="example">ejemplo:material-flash:</span> de añadir un «post» que tiene imagen de portada («cover») utilizando un [formulario de modelo](forms.md#model-forms) para ello:
1970
1984
1971
1985
```python title="posts/forms.py"
1972
1986
from django import forms
@@ -2130,7 +2144,7 @@ Hemos visto ya [cómo ordenar resultados de consultas](#ordering) pero Django ta
2130
2144
Supongamos por <span class="example">ejemplo:material-flash:</span> que queremos que todos los «posts» de nuestro «blog» se ordenen siempre por su título de forma ascendente. Tendríamos que hacer lo siguiente:
0 commit comments