ユーザーがレコードを送受信するアプリケーションを設計しており、レコードにリストされているユーザーごとに削除を分けたいと考えています (あるユーザーの削除では、他のユーザーからレコードが隠されません)。
私の基本モデルの設計は次のようになります。
class BasePrivateMessage(TimeStampedModel):
accepted = models.NullBooleanField(default=None, null=True, blank=True)
# fields in question
archived_by_recipient = models.BooleanField(default=False)
archived_by_sender = models.BooleanField(default=False)
read = models.BooleanField(default=False,
help_text='Recipient has viewed.')
recipient = models.ForeignKey('accounts.CommonUserProfile',
related_name='%(class)s_received')
sender = models.ForeignKey('accounts.CommonUserProfile',
related_name='%(class)s_sent')
message_body = models.TextField()
archived_by_xxxx
フィールドを、レコードを非表示 (ソフト削除) したユーザーのリストを格納する役割を持つManyToManyField
toに置き換えると改善されますか? accounts.CommonUserProfile
これにより、クライアント側のコードが簡単になるようです。通常、論理的な削除はユーザーごとにどのように実装されますか?