Menu
CoddyTech

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.

challenge icon

Desafío

Fácil

Permite que el propietario comparta una nota.

  1. En notes/models.py, añade un campo shared a Note: un BooleanField que sea False para una nota nueva.
  2. En notes/forms.py, añade el campo a NoteForm para que el propietario pueda marcarlo.
  3. En note_detail.html, muestra Anyone 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