Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django 生成属性参数值的模型方法_Django_Django Models_Django Rest Framework - Fatal编程技术网

Django 生成属性参数值的模型方法

Django 生成属性参数值的模型方法,django,django-models,django-rest-framework,Django,Django Models,Django Rest Framework,我想在模型内创建一个方法,可以对属性的参数调用该方法来填充它。我曾想过这样做,但它给了我一个错误NameError:name'self'没有定义 类主机(用户): 类元: 详细名称=“主机” 详细名称 def gen_路径(自身): 路径='static/{userdir}'。格式(userdir=self.email) os.mkdir(路径) 返回路径 hostpic=models.ImageField(verbose_name='Host Profile Image',upload_to=

我想在模型内创建一个方法,可以对属性的参数调用该方法来填充它。我曾想过这样做,但它给了我一个错误
NameError:name'self'没有定义

类主机(用户):
类元:
详细名称=“主机”
详细名称
def gen_路径(自身):
路径='static/{userdir}'。格式(userdir=self.email)
os.mkdir(路径)
返回路径
hostpic=models.ImageField(verbose_name='Host Profile Image',upload_to=self.gen_path(),null=True)
有什么解决办法吗?

尝试使用以下方法:

您应该插入文件夹名称以保存图像,如:-

hostpic = models.ImageField(verbose_name='Host Profile Image', upload_to='hostimages', null=True)

您可以创建将
实例
文件名
作为
上传到
属性的参数的方法

def gen_path(instance, filename):
    extension = filename.split(".")[-1]
    filename = f"{instance.email}.{extension}"
    return f"static/{filename}"


class Host(User):
    hostpic = models.ImageField(verbose_name='Host Profile Image', upload_to=gen_path, null=True)

    class Meta:
        verbose_name = "Host"
        verbose_name_plural = "Hosts"

有关详细信息

否,我需要动态保存路径。