Notatka ma właściciela
Część sekcji Użytkownicy i konta ścieżki Django w Coddy. Lekcja 8 z 16.
Każdy zalogowany użytkownik korzysta z tej samej puli notatek. Aby można było je odróżnić, każda notatka musi zapisywać, kto ją napisał: użyj ForeignKey, takiego jak ten łączący książkę z jej autorem.
Aby połączyć notatkę z użytkownikiem, nie importuj User. Wskaż w ForeignKey ustawienie settings.AUTH_USER_MODEL (po from django.conf import settings), które określa model użytkownika — tutaj jest to "auth.User". Dzięki temu kod pozostaje odpowiedni również w projekcie z własnym modelem użytkownika.
Informacja o tym, kto napisał notatkę, nigdy nie jest polem formularza: użytkownik, który mógłby je wybrać, mógłby napisać notatkę jako ktoś inny. Uzupełnia ją widok. Tak jak w sekcji Formularze, 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
ŚredniPrzypisz każdą notatkę do właściciela.
- W pliku
notes/models.pydodaj doNotepoleowner: kluczForeignKeydosettings.AUTH_USER_MODELz argumentamion_delete=models.CASCADEirelated_name="notes". Zaimportujsettingszdjango.conf. - W funkcji
note_create(w plikuviews.py) zastąpnote = form.save(). Utwórz notatkę bez zapisywania jej, przypisz jej zalogowanego użytkownika jako właściciela, a następnie ją zapisz.
Utwórz notatkę jako ada, a następnie otwórz kartę danych: jej właściciel ma wartość 1.
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