6

I'm trying to get the last_name and first_name of the newly created user and create the foldername using both values.

But I get type object 'User' has no attribute 'first_name'

This is my Users model:

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))

How can I pass the User.first_name to my function

2 Answers 2

5

If your default is constructed from other field values, you need to have a model instance to get the values.

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)
Sign up to request clarification or add additional context in comments.

Comments

1

I think you're better off overriding the save method in your User model:

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)

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.