Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.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 - Fatal编程技术网

Django 创建每次上载图像时打开新文件夹的函数

Django 创建每次上载图像时打开新文件夹的函数,django,Django,我想创建一个函数,在这个函数中,每当用户上传一个图像时,都会使用他们的用户名(designer_name)创建一个新文件夹,并将每个标题与每个上传的图像相关联,这是可能的吗 如果是的话,最好的方法是什么 模型 class Post(models.Model): designer_name = models.ForeignKey(User, on_delete=models.CASCADE) design = models.ImageField( blank=Fal

我想创建一个函数,在这个函数中,每当用户上传一个图像时,都会使用他们的用户名(designer_name)创建一个新文件夹,并将每个标题与每个上传的图像相关联,这是可能的吗

如果是的话,最好的方法是什么

模型

class Post(models.Model):
    designer_name = models.ForeignKey(User, on_delete=models.CASCADE)
    design = models.ImageField(
        blank=False, null=True, upload_to='new designs')
    title = models.CharField(max_length=100)
    date_posted = models.DateTimeField(default=timezone.now)

    def __str__(self):
        return self.title

    def get_absolute_url(self):
        return reverse("score:post-detail", kwargs={"pk": self.pk})

可以,您可以定义一个函数,指定图像应上载到的位置,并将其设置为:

class Post(models.Model):
def上传到(自我,文件名):
返回f'{self.designername}/{self.title}/{filename}'
设计器\u name=models.ForeignKey(用户,on\u delete=models.CASCADE)
设计=模型.ImageField(
blank=False,null=True,upload\u to=upload\u design\u to)
title=models.CharField(最大长度=100)
发布日期=models.DateTimeField(默认值=时区.now)
定义(自我):
返回自己的标题
def get_绝对_url(自身):
返回反向(“score:post-detail”,kwargs={'pk':self.pk})
注意
外键
不存储 在列中引用的对象,它存储所引用的记录的主键 列中的引用,其
\u id
后缀为
外键
字段。所以
ForeignKey
s通常不以
\u名称
后缀结尾。你可能想 考虑重命名<代码>设计器名称> <代码>字段> <代码>设计器< /代码> ./p>
非常感谢。只是在函数{self.title}的返回中。。。。。非常感谢。
class Post(models.Model):
    def upload_design_to(self, filename):
        return f'{self.designername}/{self.title}/{filename}'

    designer_name = models.ForeignKey(User, on_delete=models.CASCADE)
    design = models.ImageField(
        blank=False, null=True, upload_to=upload_design_to)
    title = models.CharField(max_length=100)
    date_posted = models.DateTimeField(default=timezone.now)

    def __str__(self):
        return self.title

    def get_absolute_url(self):
        return reverse("score:post-detail", kwargs={'pk': self.pk})
def new designs(instance, filename):
    file_path = 'blog/{author_id}/{title}-{filename}'.format(
        author_id=str(instance.author.id), title=str(instance.title), filename=filename)
    return file_path