如何处理可能有一天会删除的用户或用户名等外键?
我最好的猜测是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)
答案 0 :(得分:1)
关系数据库中的一种常见做法是避免删除具有(或可能具有)相关实体的记录并使用“软删除”模式,而不是添加active = BooleanField(default=True)
或deleted = BooleanField(default=False)
字段。 / p>
Django内置的User
模型有一个is_active
字段,可用于此目的。