Notatka ma właściciela
Część sekcji Użytkownicy i konta ścieżki Django w Coddy. Lekcja 8 z 16.
Wszyscy zalogowani użytkownicy korzystają ze wspólnej puli notatek. Aby je od siebie odróżnić, każda notatka musi zapisywać, kto ją utworzył: za pomocą ForeignKey, takiego jak ten łączący książkę z jej autorem.
Aby powiązać notatkę z użytkownikiem, nie importuj User. Ustaw ForeignKey na wartość ustawienia settings.AUTH_USER_MODEL (po from django.conf import settings), które wskazuje model użytkownika — tutaj jest to "auth.User". Dzięki temu kod będzie działać także w projekcie z własnym modelem użytkownika.
Informacja o tym, kto utworzył notatkę, nigdy nie jest polem formularza: użytkownik, który mógłby je wybrać, mógłby podszyć się pod kogoś innego. Uzupełnia ją widok. form.save(commit=False) tworzy obiekt bez zapisywania go, dzięki czemu widok może ustawić pole, którego nie ma w formularzu:
order = form.save(commit=False)
order.total = order.quantity * order.unit_price
order.save()Uruchom makemigrations i migrate, aby dodać nowe pole.
Wyzwanie
ŚredniNoteotrzymuje poleowner, które łączy je z użytkownikiem. Usunięcie użytkownika powoduje usunięcie jego notatek, auser.notes.all()wyświetla notatki użytkownika.- Nowa notatka należy do zalogowanego użytkownika, który ją napisał. Formularz zawiera tylko pola
titleibody.
Naciśnij Uruchom, zaloguj się jako ada (hasło: coddy-pass-123), napisz notatkę i otwórz kartę Dane.
Spróbuj swoich sił
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
Wszystkie lekcje w sekcji Użytkownicy i konta
3Twoje własne dane
Notatka ma właścicielaTylko moje notatkiPoćwicz samodzielnie: Edytor online Django