ノートを共有する
CoddyのDjangoジャーニー「ユーザーとアカウント」セクションの一部。レッスン 15/16。
ノートは非公開であり、そのほとんどは非公開のままでよいものです。友人に見せたいこともあります。レシピや読書リストなどです。このレッスンと次のレッスンでは、読み取り専用で共有できる機能を追加します。
共有するかどうかは所有者が決めるため、ノートにはその設定をBooleanFieldのTrueまたはFalseとして保存します。新しいノートは、所有者が変更しない限り非公開のままである必要があるため、デフォルト値はFalseです。ModelFormでは、BooleanFieldはチェックボックスになります。
ここでは、フォームでこのフィールドを設定できます。これは、自分のノートについて所有者自身が決めることだからです。ownerは異なり、フォームで設定することはできません。
チャレンジ
簡単所有者がメモを共有できるようにしましょう。
notes/models.pyで、Noteにsharedフィールドを追加します。新しいメモではFalseとなるBooleanFieldです。notes/forms.pyで、所有者がチェックできるように、このフィールドをNoteFormに追加します。note_detail.htmlで、メモが共有されている場合にのみAnyone with the link can read this note.と表示します。
ada(パスワードはcoddy-pass-123)でログインし、メモの「共有」にチェックを入れて保存します。すると、そのページにAnyone with the link can read this note.と表示されます。
自分で試してみよう
from django.conf import settings
from django.db import models
class Note(models.Model):
owner = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, related_name="notes")
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プレイグラウンド