【问题标题】:How to deal with users as foreign key and deletion如何处理用户作为外键和删除
【发布时间】:2017-08-07 05:57:39
【问题描述】:

如何处理有朝一日可能被删除的用户或用户名等外键?

我最好的猜测是 CharField,其选项仅限于引用字段,因为删除 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)

【问题讨论】:

  • 我已经回答了类似的问题here。这个想法是将CharFieldForeignKey一起存储。
  • (我已在下面修复并更新了我的答案)

标签: django


【解决方案1】:

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

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

delete grid in djangopackages.org中查看更多关于 Django 中软删除的资源

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-08-18
    • 2022-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-09
    • 1970-01-01
    相关资源
    最近更新 更多