У заметки есть владелец
Часть раздела Пользователи и учетные записи путешествия по Django на Coddy. Урок 8 из 16.
Все авторизованные пользователи делят одну общую стопку заметок. Чтобы различать их, в каждой заметке нужно записать, кто её написал: ForeignKey, как в случае связи книги с её автором.
Чтобы связать запись с пользователем, не импортируй User. Укажи в ForeignKey настройку settings.AUTH_USER_MODEL (после from django.conf import settings), которая задаёт модель пользователя; здесь это "auth.User". Тогда код будет работать и в проекте с собственной моделью пользователя.
Автор заметки никогда не должен быть полем формы: пользователь, который мог бы его выбрать, мог бы написать заметку от имени другого человека. Его указывает представление. form.save(commit=False) создаёт объект, не сохраняя его, поэтому представление может задать поле, которого нет в форме:
order = form.save(commit=False)
order.total = order.quantity * order.unit_price
order.save()Выполни makemigrations и migrate для нового поля.
Задание
СреднеNoteполучает полеowner, которое связывает запись с пользователем. При удалении пользователя удаляются и его заметки, аuser.notes.all()выводит список заметок пользователя.- Новая заметка принадлежит вошедшему в систему пользователю, который её создал. Форма содержит только поля
titleиbody.
Нажми Run, войди как ada (пароль coddy-pass-123), напиши заметку и открой вкладку «Данные».
Попробуйте сами
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
Все уроки раздела Пользователи и учетные записи
3Ваши собственные данные
У заметки есть владелецТолько мои заметкиПотренируйтесь самостоятельно: Песочница Django