Eine Notiz hat einen Besitzer
Teil des Abschnitts Benutzer und Konten der Django-Journey von Coddy. Lektion 8 von 16.
Alle angemeldeten Benutzer teilen sich einen Notizstapel. Damit man sie auseinanderhalten kann, muss jede Notiz festhalten, wer sie geschrieben hat: einen ForeignKey, wie den von einem Buch zu seinem Autor.
Um auf einen Benutzer zu verweisen, importiere nicht User. Verweise mit dem ForeignKey auf die Einstellung settings.AUTH_USER_MODEL (nach from django.conf import settings), die das Benutzermodell angibt, hier "auth.User". Der Code funktioniert dann auch in einem Projekt mit einem eigenen Benutzermodell.
Wer eine Notiz geschrieben hat, ist niemals ein Formularfeld: Ein Benutzer, der dies auswählen könnte, könnte als jemand anderes schreiben. Die View trägt es ein. form.save(commit=False) erstellt das Objekt, ohne es zu speichern, sodass die View ein Feld setzen kann, das das Formular nicht hat:
order = form.save(commit=False)
order.total = order.quantity * order.unit_price
order.save()Führe für das neue Feld makemigrations und migrate aus.
Aufgabe
MittelNoteerhält ein Feldowner, das mit einem Benutzer verknüpft ist. Wenn ein Benutzer gelöscht wird, werden auch seine Notizen gelöscht, unduser.notes.all()listet die Notizen eines Benutzers auf.- Eine neue Notiz gehört dem angemeldeten Benutzer, der sie geschrieben hat. Das Formular enthält nur
titleundbody.
Klicke auf „Ausführen“, melde dich als ada an (Passwort coddy-pass-123), schreibe eine Notiz und öffne den Tab „Daten“.
Probier es selbst
from django.db import models
class Note(models.Model):
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
3Deine eigenen Daten
Eine Notiz hat einen BesitzerNur meine NotizenÜbe selbstständig: Django-Playground