gpt4 book ai didi

django - 在Django的多表继承中,upload_to参数可以被覆盖吗?

转载 作者:行者123 更新时间:2023-12-02 03:11:58 24 4
gpt4 key购买 nike

对于以下代码:

class Image(models.Model):
alt_name = models.CharField(max_length=200)
url = models.CharField(max_length=255, blank=True)

class Button(Image):
source = models.ImageField(max_length=1024, upload_to='buttons')

class Snapshot(Image):
source = models.ImageField(max_length=1024, upload_to='snapshots')

class Banner(Image):
source = models.ImageField(max_length=1024, upload_to='banners')

在上述情况下,我想将每种不同类型上传到其自己的上传文件夹。例如,横幅将位于名为 banners 的文件夹下,快照将位于 snapshots 下。上面的工作按预期进行,但我正在为每个子类重复 ImageField 。以上是实现我的目标的唯一方法还是有 DRYer 方法?

最佳答案

upload_to argument 是可调用的,因此您可以传入一个函数。你可以这样做:

import os
def upload_path(instance, filename):
return os.path.join(instance.__class__.__name__ + 's', filename)

class Image(models.Model):
alt_name = models.CharField(max_length=200)
url = models.CharField(max_length=255, blank=True)
source = models.ImageField(max_length=1024, upload_to=upload_path)

关于django - 在Django的多表继承中,upload_to参数可以被覆盖吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1870108/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com