Thi*_*Lam 2 django django-models
对于以下代码:
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')
Run Code Online (Sandbox Code Playgroud)
在上面的例子中,我想将每种不同类型上传到它自己的上传文件夹.例如,横幅将放在一个名为的文件夹下banners,快照将被置于其下snapshots.上面的工作正如预期的那样,但我正在为每个子类重复ImageField.以上是实现我的目标的唯一方法还是有DRYer方法?
该upload_to参数是可调用的,所以你可以在一个函数传递.你可以这样做:
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)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
247 次 |
| 最近记录: |