Menu
CoddyTech

Compartilhando uma nota

Parte da seção Usuários e contas do Journey de Django da Coddy. Lição 15 de 16.

As notas são privadas, e isso é adequado para a maioria delas. Às vezes, você quer mostrar uma para um amigo: uma receita, uma lista de leitura. Nesta lição e na próxima, você vai adicionar o compartilhamento somente para leitura.

Compartilhar é uma escolha que o proprietário faz, então a nota armazena essa escolha em um BooleanField, True ou False. Uma nova nota deve permanecer privada, a menos que o proprietário decida o contrário, então seu valor padrão é False. Em um ModelForm, um BooleanField se torna uma caixa de seleção.

Aqui, o formulário pode definir o campo, porque essa é a escolha do proprietário sobre a própria nota. owner é diferente: nenhum formulário pode defini-lo.

challenge icon

Desafio

Fácil

Permita que o proprietário compartilhe uma nota.

  1. Em notes/models.py, adicione um campo shared a Note: um BooleanField que seja False para uma nota nova.
  2. Em notes/forms.py, adicione o campo a NoteForm para que o proprietário possa marcá-lo.
  3. Em note_detail.html, exiba Anyone with the link can read this note. somente quando a nota estiver compartilhada.

Entre como ada (senha coddy-pass-123), marque “Compartilhada” em uma nota e salve: a página dela exibirá Anyone with the link can read this note.

Experimente você mesmo

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 as lições de Usuários e contas

Pratique por conta própria: Playground de Django