如何将用户作为外键和删除处理

时间:2017-03-16 07:22:45

标签: django

如何处理可能有一天会删除的用户或用户名等外键?

我最好的猜测是CharField,其选择仅限于Referennced Field,因为删除ForeignKey会导致级联删除。

我想保留例如与对象相关的用户名,即使原始用户对象已被删除。

这样的事情会起作用吗?

def set_user_name(self):
    self.user_name = self.user.name
    return None

user = models.ForeignKey(User, 
                         blank=True, 
                         null=True, 
                         on_delete=models.SET(set_user_name))
user_name = models.CharField(max_length=50, blank=True, null=True)

1 个答案:

答案 0 :(得分:1)

关系数据库中的一种常见做法是避免删除具有(或可能具有)相关实体的记录并使用“软删除”模式,而不是添加active = BooleanField(default=True)deleted = BooleanField(default=False)字段。 / p>

Django内置的User模型有一个is_active字段,可用于此目的。

delete grid in djangopackages.org

中查看有关Django中软删除的更多资源