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.
Desafio
FácilPermita que o proprietário compartilhe uma nota.
- Em
notes/models.py, adicione um camposharedaNote: umBooleanFieldque sejaFalsepara uma nota nova. - Em
notes/forms.py, adicione o campo aNoteFormpara que o proprietário possa marcá-lo. - Em
note_detail.html, exibaAnyone 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