Menu
CoddyTech

메모에는 소유자가 있어요

Coddy Django 여정의 사용자와 계정 섹션에 포함된 레슨. 16개 중 8번째.

로그인한 모든 사용자는 하나의 메모 더미를 공유합니다. 메모를 구분하려면 각 메모에 작성자를 기록해야 합니다. 책과 저자를 연결할 때처럼 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를 실행하세요.

challenge icon

챌린지

중급
  • Note에는 사용자를 연결하는 owner 필드가 있습니다. 사용자를 삭제하면 해당 사용자의 노트도 삭제되며, user.notes.all()은 사용자의 노트 목록을 반환합니다.
  • 새 노트는 로그인한 작성자의 노트가 됩니다. 양식에는 title과 body만 남깁니다.

실행을 누르고 ada(비밀번호 coddy-pass-123)로 로그인한 다음, 노트를 작성하고 Data 탭을 여세요.

직접 해보기

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

사용자와 계정의 모든 레슨

직접 연습해 보세요: Django 플레이그라운드