簡體   English   中英

在Django中通過管理員上傳圖片

[英]Image upload through admin in Django

我希望能夠通過Django中的管理員上傳圖像。 但是我有些困難

項目結構:

/Proj
   /Proj

   /static
      /img
         /albums
            /album1
               img1
            /album2
               img2

專輯類別:

class Album(models.Model):
    title = models.CharField(max_length = 60)

    def __unicode__(self):
        return self.title

圖片類別:

class Image(models.Model):
    title = models.CharField(max_length = 60, blank = True, null = True)
    image = models.FileField(upload_to = get_upload_file_name)  <-- !!!!
    tags = models.ManyToManyField(Tag, blank = True)
    albums = models.ForeignKey(Album)
    width = models.IntegerField(blank = True, null = True)
    height = models.IntegerField(blank = True, null = True)
    created = models.DateTimeField(auto_now_add=True)

我認為我的image = models.FileField(upload_to = get_upload_file_name)使用get_upload_file_name方法將圖片放置在正確的相冊中。 這是通過追加到我做MEDIA_ROOT這是MEDIA_ROOT = os.path.join(BASE_DIR, 'static')

因此,應該使用get_upload_file_name方法。 但是我不確定該怎么做。

我認為在上傳之前,我需要先創建一個相冊,然后才能確定該圖像將插入哪個相冊。 不知道我的ImageAlbum課程是否完整。 謝謝您的幫助!!

您傳遞給upload_to的函數必須具有以下形式:

def get_upload_file_name(instance, filename):
    new_file_path_and_name = os.path.join(BASE_DIR, 'static', 'test.txt')
    return new_file_path_and_name

instance是您要保存的Image模型的實例。 這意味着它可以訪問已填充的所有其他字段。 filename是已上傳文件的原始名稱。 您可以選擇使用filename或簡單地返回您選擇的其他路徑和名稱。

官方文檔在這里

暫無
暫無

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

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