Django:字段模型实例的默认值

Yan*_*ick 5 django django-models

我正在尝试获取新创建的用户的last_name和first_name,并使用这两个值创建foldername.

但我得到类型对象'用户'没有属性'first_name'

这是我的用户型号:

def create_folder_name(first_name, last_name):
    return first_name + last_name


class User(AbstractUser):
    folder_name = models.CharField(max_length=255, unique=True,
                                   default=create_folder_name(User.first_name, User.last_name))
Run Code Online (Sandbox Code Playgroud)

如何将User.first_name传递给我的函数

ale*_*cxe 5

如果您default是从其他字段值构造的,则需要有一个模型实例来获取这些值。

覆盖save()方法

class User(AbstractUser):
    folder_name = models.CharField(max_length=255, unique=True)

    def save(self, *args, **kwargs):
        if not self.folder_name:
            self.folder_name = create_folder_name(self.first_name, self.last_name)
        super(User, self).save(*args, **kwargs)
Run Code Online (Sandbox Code Playgroud)