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

时间:2014-05-20 17:26:25

标签: django django-models

我试图获取新创建的用户的last_name和first_name,并使用这两个值创建foldername。

但是我得到了类型对象' User'没有属性' 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))

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

2 个答案:

答案 0 :(得分:4)

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

Override the save() method

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)

答案 1 :(得分:1)

我认为您最好覆盖save模式中的User方法:

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

    def save(self, *args, **kwargs):
        self.folder_name = create_folder_name(self.first_name, self.last_name)
        super(User, self).save(*args, **kwargs)