3
ユーザーがサインアップして読書を開始できるブックアプリケーションを作成しています。Djangoのユーザーアクティビティの監視
これは本のためmodel.pyです:
from django.db import models
from django.urls import reverse
from django.conf import settings
class Chapter(models.Model):
title = models.CharField(max_length=200, unique=True)
slug = models.SlugField(unique=True)
date_completed = models.DateTimeField(blank=True, null=True)
completed = models.BooleanField(default=False)
def __str__(self):
return self.title
def get_absolute_url(self):
return reverse("course:subchapter_list", kwargs={"pk": self.pk})
class SubChapter(models.Model):
chapter = models.ForeignKey(Chapter, on_delete=models.CASCADE)
title = models.CharField(max_length=200, unique=True)
slug = models.SlugField(unique=True)
completed = models.BooleanField(default=False)
def __str__(self):
return self.title
class SubSection(models.Model):
sub_chapter = models.ForeignKey(SubChapter, on_delete=models.CASCADE)
title = models.CharField(max_length=200, unique=True)
slug = models.SlugField(unique=True)
text = models.TextField(null=True, blank=False)
completed = models.BooleanField(default=False)
def __str__(self):
return self.title
def get_absolute_url(self):
return reverse("course:detail",
kwargs={"slug": self.sub_chapter.slug,
"slug2": self.slug,
"pk": self.sub_chapter.chapter.pk,
}
)
どのように私は、そのモデルのインスタンスの完成属性がに設定されているように、サブセクション/サブチャプター/チャプターを見たとき/読むことを各ユーザーの進捗状況を監視することができますそのユーザーのためだけに本当ですか?私の現在の実装はすべての人にとってTrueに設定されています。
どのように実装するかを示すコードスニペットがあります。
これは、特定のユーザーがモデルインスタンスの1つに対して取得要求を行ったときに実行されるため、ビューでこれを行うことができます。 – Evert
基本クラスの作成を検討したいと思うかもしれません。なぜなら、あなたが求めているロジックを含め、3つのクラスの間に共通点があると思われるからです。 – Evert
Djangoの[signals](https://docs.djangoproject.com/en/dev/topics/signals/)セクションを読むこともできますが、それは有用でないかもしれません。それはまた、論理の一部を難読化する可能性があります。まず、特定のビューのget要求でこれを処理できるかどうかを確認します。 – Evert