Partager une note
Fait partie de la section Utilisateurs et comptes du Journey Django de Coddy. Leçon 15 sur 16.
Les notes sont privées, et c’est le cas de la plupart d’entre elles. Parfois, tu veux en montrer une à un ami : une recette, une liste de lecture. Au cours de cette leçon et de la suivante, tu vas ajouter le partage en lecture seule.
Le partage est un choix que fait le propriétaire ; la note l’enregistre donc dans un BooleanField, avec True ou False. Une nouvelle note doit rester privée, sauf si le propriétaire en décide autrement ; sa valeur par défaut est donc False. Dans un ModelForm, un BooleanField devient une case à cocher.
Ici, le formulaire peut définir le champ, car c’est le choix du propriétaire concernant sa propre note. owner est différent : aucun formulaire ne peut le définir.
Défi
FacilePermets au propriétaire de partager une note.
- Dans
notes/models.py, ajoute un champsharedàNote: unBooleanFieldqui vautFalsepour une nouvelle note. - Dans
notes/forms.py, ajoute le champ àNoteFormpour que le propriétaire puisse le cocher. - Dans
note_detail.html, afficheAnyone with the link can read this note.uniquement lorsque la note est partagée.
Connecte-toi en tant que ada (mot de passe coddy-pass-123), coche « Partagée » pour une note et enregistre-la : sa page affiche Anyone with the link can read this note.
Essayez vous-même
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
Toutes les leçons de Utilisateurs et comptes
Entraînez-vous par vous-même : Playground Django