在 Model.py 中使用模型字段值

问题描述 投票:0回答:2

我在 django 中有模型,我想使用此帐户模型中的用户名值来寻址 ImageField 我怎样才能做到这一点?

class Account(models.Model):
    nickname = models.CharField(max_length=150)
    username = models.CharField(max_length=70)
    password = models.CharField(max_length=70)
    email = models.EmailField(max_length=70)

    avatar = models.ImageField(upload_to = f'userdata/{username}/avatar/' ,default= MEDIA_ROOT + 'default/img/avatar.png')
django django-models django-rest-framework django-views django-templates
2个回答
0
投票

使用可调用:

class Account(models.Model):
    nickname = models.CharField(max_length=150)
    username = models.CharField(max_length=70)
    password = models.CharField(max_length=70)
    email = models.EmailField(max_length=70)

    def avatar_path(self, filename):
        return f'userdata/{self.username}/avatar/{filename}'

    avatar = models.ImageField(
        upload_to=avatar_path, default=MEDIA_ROOT + 'default/img/avatar.png'
    )

0
投票

使用 upload_to 作为可调用的,例如函数。 作为参考,请检查此gfg页面

def user_directory_path(instance, filename):
    return f'userdata/{instance.username}/avatar/{filename}'

class Account(models.Model):
    nickname = models.CharField(max_length=150)
    username = models.CharField(max_length=70)
    password = models.CharField(max_length=70)
    email = models.EmailField(max_length=70)

    avatar = models.ImageField(upload_to=user_directory_path, default=MEDIA_ROOT + 'default/img/avatar.png')

© www.soinside.com 2019 - 2024. All rights reserved.