0

我正在设计一个用户发送/接收记录的应用程序,我希望为记录中列出的每个用户分开删除(一个用户的删除不会对另一个用户隐藏记录)。

我的基本模型设计如下所示:

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将字段替换ManyToManyFieldaccounts.CommonUserProfile负责存储隐藏(软删除)记录的用户列表的字段是否会有所改进?似乎这会使客户端代码更简单。通常如何在每个用户的基础上实施软删除?

4

1 回答 1

1

我认为没有通用的行业标准解决方案。只需做任何您认为可以为您的特定应用程序完成工作的事情。

据我了解,您的消息只能由发件人和收件人查看,在这种情况下,我认为没有理由添加 M2M 字段。它只会减慢您的应用程序,因为它会使用额外的资源来进行额外的查找。但是,如果您需要扩展您的应用程序,使许多用户能够看到一条消息(例如群组对话),那么添加 M2M 字段将是有意义的。

底线是做任何适合您应用程序需要的事情。像往常一样,它是抽象(更灵活)与性能之间的折衷。

于 2013-12-11T00:35:44.417 回答