Bir Notun Sahibi Vardır
Coddy'nin Django Journey'sinin Kullanıcılar ve Hesaplar bölümünün bir parçası. Ders 8 / 16.
Oturum açmış tüm kullanıcılar aynı not yığınını paylaşır. Notları birbirinden ayırmak için her notun kimin tarafından yazıldığını kaydetmesi gerekir: tıpkı bir kitabı yazarına bağlayan ForeignKey gibi.
Bir kullanıcıya bağlamak için User öğesini içe aktarmayın. ForeignKey öğesini kullanıcı modelini belirten settings.AUTH_USER_MODEL ayarına yönlendirin (from django.conf import settings sonrasında); buradaki değer "auth.User" olur. Böylece kod, kendi kullanıcı modeli olan bir projede de sorunsuz çalışır.
Bir notu kimin yazdığı hiçbir zaman form alanı olmaz: bu alanı seçebilen bir kullanıcı, başka biriymiş gibi not yazabilir. Görünüm bu alanı doldurur. Forms bölümündeki gibi, form.save(commit=False) nesneyi kaydetmeden oluşturur; böylece görünüm, formda bulunmayan bir alanı ayarlayabilir:
order = form.save(commit=False)
order.total = order.quantity * order.unit_price
order.save()Yeni alan için makemigrations ve migrate komutlarını çalıştırın.
Görev
OrtaHer nota bir sahip ata.
notes/models.pydosyasındaNotemodeline birowneralanı ekle:settings.AUTH_USER_MODELiçin birForeignKey;on_delete=models.CASCADEverelated_name="notes"kullan.settingsöğesinidjango.confmodülünden içe aktar.note_create(views.py) içindenote = form.save()satırını değiştir. Notu kaydetmeden oluştur, sahibini oturum açmış kullanıcı olarak ayarla, ardından kaydet.
ada olarak bir not yaz, ardından Data sekmesini aç: sahibi 1.
Kendin dene
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
Kullanıcılar ve Hesaplar bölümündeki tüm dersler
3Kendi Verileriniz
Bir Notun Sahibi VardırYalnızca NotlarımKendi başına pratik yap: Django playground