Min*_*nnR 2 django models filefield imagefield
我想根据Django管理员用户提供的字段值将图像上传到媒体根目录.这是我编写的代码,我知道upload_to参数导致了问题.但我不知道如何使它发挥作用.
class Info(models.Model):
file_no = models.CharField(max_length=100)
date = models.DateField()
area = models.IntegerField(default=0.00)
mouja = models.CharField(max_length=100)
doc_type_choices = (
('deed', 'Deed'),
('khotian', 'Khotian'),
)
doc_type = models.CharField(max_length=50,
choices=doc_type_choices,
default='deed')
doc_no = models.CharField(max_length=50)
def __unicode__(self):
return self.file_no
class Image(models.Model):
info = models.ForeignKey('Info')
content = models.ImageField(upload_to=self.info.mouja/self.info.doc_type)
def __unicode__(self):
return self.info.file_no
Run Code Online (Sandbox Code Playgroud)
每当我运行python manage.py makemigrations时它会显示NameError:name'self '未定义 事先感谢您的帮助!
在upload_to关键字中,您需要提供要定义的函数,例如:
def path_file_name(instance, filename):
return '/'.join(filter(None, (instance.info.mouja, instance.info.doc_type, filename)))
class Image(models.Model):
content = models.ImageField(upload_to=path_file_name)
Run Code Online (Sandbox Code Playgroud)
这也可以是可调用的,例如函数,它将被调用以获得上载路径,包括文件名.这个callable必须能够接受两个参数,并返回一个Unix风格的路径(带有正斜杠)以传递给存储系统.
在这个callable中,在特定情况下是path_file_name函数,我们从instance字段构建一个路径,该路径是Image模型的特定记录.
该filter函数从None列表中删除任何项目,该join函数通过加入所有列表项来构造路径/.
| 归档时间: |
|
| 查看次数: |
1722 次 |
| 最近记录: |