Menu
CoddyTech

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.

challenge icon

Aufgabe

Einfach

Lass den Besitzer eine Notiz teilen.

  1. Füge in notes/models.py ein Feld shared zu Note hinzu: ein BooleanField, das bei einer neuen Notiz den Wert False hat.
  2. Füge in notes/forms.py das Feld zu NoteForm hinzu, damit der Besitzer es ankreuzen kann.
  3. Zeige in note_detail.html Anyone 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