Menu
CoddyTech

Sebuah Catatan Memiliki Pemilik

Termasuk bagian Pengguna dan Akun dalam perjalanan Django di Coddy. Pelajaran 8 dari 16.

Semua pengguna yang sudah masuk berbagi satu tumpukan catatan. Agar bisa membedakannya, setiap catatan harus mencatat siapa yang menulisnya: ForeignKey, seperti hubungan antara buku dan pengarangnya.

Untuk menautkan ke pengguna, jangan impor User. Arahkan ForeignKey ke pengaturan settings.AUTH_USER_MODEL (setelah from django.conf import settings), yang menentukan model pengguna, "auth.User" di sini. Dengan begitu, kode tetap berfungsi di proyek yang memiliki model penggunanya sendiri.

Siapa yang menulis catatan tidak pernah menjadi field formulir: pengguna yang bisa memilihnya dapat menulis sebagai orang lain. View mengisinya. form.save(commit=False) membuat object tanpa menyimpannya, sehingga view dapat mengatur field yang tidak dimiliki formulir:

order = form.save(commit=False)
order.total = order.quantity * order.unit_price
order.save()

Jalankan makemigrations dan migrate untuk field baru.

challenge icon

Tantangan

Sedang
  • Note mendapat field owner yang terhubung ke pengguna. Menghapus pengguna akan menghapus catatan mereka, dan user.notes.all() menampilkan daftar catatan pengguna.
  • Catatan baru menjadi milik pengguna yang sedang masuk dan menulisnya. Formulir hanya menyimpan title dan body.

Tekan Jalankan, masuk sebagai ada (kata sandi coddy-pass-123), tulis catatan, lalu buka tab Data.

Coba sendiri

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

Semua pelajaran di Pengguna dan Akun

Latihan sendiri: Playground Django