Una nota ha un proprietario
Fa parte della sezione Utenti e account del percorso Django di Coddy. Lezione 8 di 16.
Tutti gli utenti autenticati condividono un unico gruppo 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. Imposta la ForeignKey sul valore settings.AUTH_USER_MODEL (dopo from django.conf import settings), che specifica il modello utente, qui "auth.User". In questo modo, il codice continua a funzionare anche in un progetto con un proprio modello utente.
Chi ha scritto una nota non è mai un campo del modulo: un utente che potesse sceglierlo potrebbe scrivere a nome di qualcun altro. Lo imposta la vista. Come nella sezione Forms, form.save(commit=False) crea l’oggetto senza salvarlo, così la vista può impostare un campo che il modulo non ha:
order = form.save(commit=False)
order.total = order.quantity * order.unit_price
order.save()Esegui makemigrations e migrate per il nuovo campo.
Sfida
MedioAssegna un proprietario a ogni nota.
- In
notes/models.py, aggiungi un campoowneraNote: unaForeignKeyasettings.AUTH_USER_MODELconon_delete=models.CASCADEerelated_name="notes". Importasettingsdadjango.conf. - In
note_create(views.py), sostituiscinote = form.save(). Crea la nota senza salvarla, imposta come proprietario l’utente che ha effettuato l’accesso, quindi salvala.
Scrivi una nota come ada, poi apri la scheda Data: il suo proprietario è 1.
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