如何使用on_delete属性在用户模型的foreignkey字段中设置用户全名?

Nee*_*mar 9 python django foreign-keys django-models models

我在django中有一个带有用户模型的外键的模型.

class News(models.Model):
    user = models.ForeignKey(AUTH_USER_MODEL, on_delete=models.SET(???))
    message - models.TextField()
Run Code Online (Sandbox Code Playgroud)

所以当任何用户帐号从数据库中删除时,在新闻表条目中也会根据用户删除.所以我希望当删除任何用户帐户时,我需要在用户字段中设置他/她的全名'on_delete=models.SET(???)'

例:

如果我有用户first_name ='Neeraj'和last_name ='Kumar'当我想删除该用户帐户然后在新闻表中我想保存他的名字.

nar*_*ary 10

userNewsModel中的字段映射到UserModel实例.

您无法为此字段指定字符串.您只能为User模型实例分配null .

您必须提供替代用户来代替已删除的用户.因此要么保留用户进行替换,要么在删除时创建一个用户.在文档中非常清楚地解释了它.

您可以做的一件事是nameNews模型中添加一个新字段,并在创建News实例时填充它.

class News(models.Mode):
    user = models.ForeignKey(AUTH_USER_MODEL, on_delete=models.SET_NULL)
    name = models.CharField()

    def save(self, *args, **kwargs):
        if not self.id:
            self.name = self.user.first_name + self.user.last_name
        super(News, self).save(*args, **kwargs)
Run Code Online (Sandbox Code Playgroud)

现在User删除时,userfield设置为NULL并且name字段包含所需的名称信息.