Eine Notiz teilen
Teil des Abschnitts Benutzer und Konten der Django-Journey von Coddy. Lektion 15 von 16.
Notizen sind privat, und das ist bei den meisten auch richtig so. Manchmal möchtest du eine Notiz mit einem Freund teilen: ein Rezept, eine Leseliste. In dieser und der nächsten Lektion fügst du das Teilen im Nur-Lese-Modus hinzu.
Das Teilen ist eine Entscheidung des Besitzers, deshalb speichert die Notiz diese in einem BooleanField, True oder False. Eine neue Notiz muss privat bleiben, sofern der Besitzer nichts anderes bestimmt, daher ist der Standardwert False. In einem ModelForm wird ein BooleanField zu einem Kontrollkästchen.
Hier kann das Formular das Feld setzen, denn es ist die Entscheidung des Besitzers über seine eigene Notiz. owner ist anders: Kein Formular darf es setzen.
Aufgabe
EinfachLass den Besitzer eine Notiz teilen.
- Füge in
notes/models.pyein FeldsharedzuNotehinzu: einBooleanField, das bei einer neuen Notiz den WertFalsehat. - Füge in
notes/forms.pydas Feld zuNoteFormhinzu, damit der Besitzer es ankreuzen kann. - Zeige in
note_detail.htmlAnyone with the link can read this note.nur an, wenn die Notiz geteilt wird.
Melde dich als ada an (Passwort coddy-pass-123), kreuze bei einer Notiz „Geteilt“ an und speichere sie: Auf der Seite steht Anyone with the link can read this note.
Probier es selbst
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
Alle Lektionen in Benutzer und Konten
Übe selbstständig: Django-Playground