Menu
CoddyTech

ノートを共有する

CoddyのDjangoジャーニー「ユーザーとアカウント」セクションの一部。レッスン 15/16。

ノートは非公開であり、そのほとんどは非公開のままでよいものです。友人に見せたいこともあります。レシピや読書リストなどです。このレッスンと次のレッスンでは、読み取り専用で共有できる機能を追加します。

共有するかどうかは所有者が決めるため、ノートにはその設定をBooleanFieldのTrueまたはFalseとして保存します。新しいノートは、所有者が変更しない限り非公開のままである必要があるため、デフォルト値はFalseです。ModelFormでは、BooleanFieldはチェックボックスになります。

ここでは、フォームでこのフィールドを設定できます。これは、自分のノートについて所有者自身が決めることだからです。ownerは異なり、フォームで設定することはできません。

challenge icon

チャレンジ

簡単

所有者がメモを共有できるようにしましょう。

  1. notes/models.pyで、Noteにsharedフィールドを追加します。新しいメモではFalseとなるBooleanFieldです。
  2. notes/forms.pyで、所有者がチェックできるように、このフィールドをNoteFormに追加します。
  3. 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プレイグラウンド