簡體   English   中英

如何在 django admin 中將圖像保存到自定義文件路徑?

[英]How to save an image to a customized filepath in django admin?

我正在嘗試將圖像上傳到我選擇的特定文件夾。 型號代碼如下:

class PhotosTags(models.Model):
    Tag_name = models.CharField('Tag Name', max_length=100, default='NA', unique=True)
    Description = models.TextField('Tag Description', max_length=200, blank=True)

    class Meta:
        verbose_name = 'Tags'
        verbose_name_plural = verbose_name
        ordering = ['Date_created']

    def __str__(self):
        return str(self.Tag_name)

class Photos(models.Model):
    Name = models.TextField('Photo Name', max_length=200, blank=True)
    Tag = models.ForeignKey(PhotosTags, on_delete=models.CASCADE, default=None)
    filepath = 'Gallery'
    Photo = models.ImageField(upload_to=filepath, blank=False)

    class Meta:
        verbose_name = 'Photos'
        verbose_name_plural = verbose_name
        ordering = ['Date_uploaded']

pre_save.connect(upload_photo, sender=Photos)

這里每個標簽都有自己的文件夾。 我想實現的功能是,當我上傳圖片時,我可以選擇一個特定的標簽(通過選擇“標簽”),然后可以將這張圖片上傳到該文件夾​​中。 我嘗試使用: signals來更改文件filepath但失敗了。 我寫的代碼是:

def upload_photo(sender, instance, **kwargs):
    tardir = instance.Tag.Tag_name
    instance.filepath = 'Gallery'+'/'+tardir
    

您可以通過使用函數發送 upload_to 路徑來實現它。

import os

def path_generator(instance, filename):
    base, extension = os.path.splitext(os.path.basename(filename))
    file_dir = f"your_desired_path.{extension}"
    return file_dir

class Photos(models.Model):
    Name = models.TextField('Photo Name', max_length=200, blank=True)
    Tag = models.ForeignKey(PhotosTags, on_delete=models.CASCADE, default=None)
  
    Photo = models.ImageField(upload_to=path_generator, blank=False)

class Meta:
    verbose_name = 'Photos'
    verbose_name_plural = verbose_name
    ordering = ['Date_uploaded']

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM