Una nota tiene un propietario
Parte de la sección Usuarios y cuentas del Journey de Django de Coddy. Lección 8 de 16.
Todos los usuarios que han iniciado sesión comparten un montón de notas. Para distinguirlas, cada nota debe registrar quién la escribió: una ForeignKey, como la que conecta un libro con su autor.
Para enlazar con un usuario, no importes User. Asigna a ForeignKey la configuración settings.AUTH_USER_MODEL (después de from django.conf import settings), que indica el modelo de usuario, aquí "auth.User". Así, el código sigue funcionando en un proyecto con su propio modelo de usuario.
Quién escribió una nota nunca es un campo del formulario: un usuario que pudiera elegirlo podría escribir como otra persona. La vista lo completa. form.save(commit=False) crea el objeto sin guardarlo, para que la vista pueda establecer un campo que el formulario no tiene:
order = form.save(commit=False)
order.total = order.quantity * order.unit_price
order.save()Ejecuta makemigrations y migrate para el nuevo campo.
Desafío
IntermedioNoteobtiene un campoownerque se vincula a un usuario. Al eliminar un usuario, se eliminan sus notas, yuser.notes.all()muestra las notas de un usuario.- Una nota nueva pertenece al usuario que ha iniciado sesión y la ha escrito. El formulario conserva solo
titleybody.
Pulsa Run, inicia sesión como ada (contraseña coddy-pass-123), escribe una nota y abre la pestaña Data.
Pruébalo tú mismo
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
Todas las lecciones de Usuarios y cuentas
3Tus propios datos
Una nota tiene un propietarioSolo mis notasPractica por tu cuenta: Playground de Django