如何在用户模型的外键字段中使用on_delete属性设置用户全名? [英] How can I set user full name in foreignkey field with User Model using on_delete attribute?

查看:182
本文介绍了如何在用户模型的外键字段中使用on_delete属性设置用户全名?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I have a model in django that have foreignkey with User model.

class News(models.Model):
    user = models.ForeignKey(AUTH_USER_MODEL, on_delete=models.SET(???))
    message - models.TextField()

所以当任何用户帐户从数据库中删除时,在新闻表项中也会根据用户删除。所以我想要当任何用户帐户被删除时,我需要使用'on_delete = models.SET(???)'

So When any user account delete from database then in News table entries also deleted according to user. So I want that When any user account deleted then I need to set his/her full name in user field using 'on_delete=models.SET(???)'


示例:

Example:

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

If I have user that first_name = 'Neeraj' and last_name='Kumar' When I want to delete that user account then in News table I want to save his name.

推荐答案

用户字段新闻模型映射到用户模型实例。

user field in News Model maps to a User Model instance.

您无法为此字段分配字符串。您只能分配null a User model instance。

You cannot assign a string to this field. You can only assign either null a User model instance.

您必须提供替代用户来代替已删除的用户。所以要么在删除时保留替换用户或创建一个用户。在 docs

You will have to provide a substitute user to put in place of the deleted user. So either reserve a user for substitution or create one at the time of deletion. It is explained very clearly in the docs.

您可以做的一件事是向<$ c $中添加一个新的名称 c>新闻模型,并在创建新闻实例时填充。

One thing you can do is to add a new name field to the News model and populate it when creating the News instance.

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)

现在,当用户被删除时,用户字段设置为NULL, code> name 字段包含所需的名称信息。

Now when User is deleted, user field is set to NULL and name field contains the required name information.

这篇关于如何在用户模型的外键字段中使用on_delete属性设置用户全名?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆