Una nota ha un proprietario
Fa parte della sezione Utenti e account del percorso Django di Coddy. Lezione 8 di 16.
Tutti gli utenti che hanno effettuato l'accesso condividono un unico mucchio di note. Per distinguerle, ogni nota deve registrare chi l'ha scritta: una ForeignKey, come quella che collega un libro al suo autore.
Per collegarsi a un utente, non importare User. Indica come riferimento della ForeignKey l'impostazione settings.AUTH_USER_MODEL (dopo from django.conf import settings), che specifica il modello utente, qui "auth.User". In questo modo, il codice funziona anche in un progetto con un modello utente personalizzato.
Chi ha scritto una nota non è mai un campo del modulo: un utente che potesse sceglierlo potrebbe scrivere a nome di qualcun altro. È la vista a valorizzarlo. form.save(commit=False) crea l'oggetto senza salvarlo, così la vista può impostare un campo che il modulo non contiene:
order = form.save(commit=False)
order.total = order.quantity * order.unit_price
order.save()Esegui makemigrations e migrate per il nuovo campo.
Sfida
MedioNoteottiene un campoownerche collega a un utente. Eliminando un utente si eliminano le sue note euser.notes.all()elenca le note dell'utente.- Una nuova nota appartiene all'utente che ha effettuato l'accesso e l'ha scritta. Il modulo include solo
titleebody.
Premi Esegui, accedi come ada (password coddy-pass-123), scrivi una nota e apri la scheda Dati.
Provalo tu
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
Tutte le lezioni di Utenti e account
3I tuoi dati
Una nota ha un proprietarioSolo le mie noteEsercitati da solo: Playground Django