2013-12-10 46 views
0

我正在設計一個應用程序,其中用戶發送/接收記錄,我想刪除記錄中列出的每個用戶的分離(一個用戶的刪除不會隱藏記錄用戶)。在Django每用戶軟刪除模型設計

我的基本模型設計是這樣的:

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() 

難道是改善與一個ManyToManyFieldaccounts.CommonUserProfile是負責存儲誰隱藏了用戶的列表替換archived_by_xxxx字段(軟刪除) 記錄?看起來這會使客戶端代碼更簡單。通常如何在每個用戶的基礎上實施軟刪除?

回答

1

我不認爲這是一個通用的行業標準解決方案。只要做你認爲能爲你完成特定應用的工作。

根據我的理解,您的郵件只能由發件人和收件人查看,在這種情況下,我認爲沒有理由添加M2M字段。它只會減慢您的應用程序,因爲它會使用額外的資源來執行額外的查找。但是,如果您需要擴展您的應用程序,以便許多用戶能夠看到單個消息(例如,羣組對話),那麼添加M2M字段是有意義的。

底線是做任何適合您的應用需求。像往常一樣,它是抽象(更靈活)與性能之間的妥協。

+0

謝謝;這似乎是很好的建議。很難找到像這樣的事情的最佳實踐,而且如果我在模型設計方面走向錯誤的方向,我經常不知道如何。非常感激! – kevins