Compartir una nota
Parte de la sección Usuarios y cuentas del Journey de Django de Coddy. Lección 15 de 16.
Las notas son privadas, y eso es lo adecuado para la mayoría. A veces quieres mostrarle una a un amigo: una receta, una lista de lecturas. A lo largo de esta lección y la siguiente, añadirás la opción de compartir en modo de solo lectura.
Compartir es una decisión que toma el propietario, así que la nota lo almacena en un BooleanField, True o False. Una nota nueva debe seguir siendo privada a menos que el propietario indique lo contrario, así que su valor predeterminado es False. En un ModelForm, un BooleanField se convierte en una casilla de verificación.
Aquí el formulario puede establecer el campo, porque es una decisión del propietario sobre su propia nota. owner es diferente: ningún formulario puede establecerlo.
Desafío
FácilPermite que el propietario comparta una nota.
- En
notes/models.py, añade un camposharedaNote: unBooleanFieldque seaFalsepara una nota nueva. - En
notes/forms.py, añade el campo aNoteFormpara que el propietario pueda marcarlo. - En
note_detail.html, muestraAnyone with the link can read this note.solo cuando la nota esté compartida.
Inicia sesión como ada (contraseña coddy-pass-123), marca Compartida en una nota y guárdala: su página dice Anyone with the link can read this note.
Pruébalo tú mismo
from django.conf import settings
from django.db import models
class Note(models.Model):
owner = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, related_name="notes")
title = models.CharField(max_length=100)
body = models.TextField(blank=True)
created = models.DateTimeField(auto_now_add=True)
class Meta:
ordering = ["-created"]
def __str__(self):
return self.title
Todas las lecciones de Usuarios y cuentas
Practica por tu cuenta: Playground de Django