Django:如何在管理员中上传文件
Django : how to upload a file in admin
我尝试创建一个 link 以在管理员中下载文件,但它不起作用
我的模型
class Event(models.Model):
......
file = models.FileField(_('fichier'), upload_to='medias', null=True, blank=True)
def file_(self):
if self.file:
return "<a href='%s'>download</a>" % (self.file.url,)
else:
return "No attachment"
我的管理员:
class EventAdmin(admin.ModelAdmin):
list_display = ('title', 'start', 'end', 'user', 'fin', 'frequency', 'file_',)
fieldsets = (
(None, {
'fields': ('title','start', 'end', 'is_cancelled', 'calendar', 'user', 'description', ('frequency', 'fin' ), 'activated', 'file_',)
}),
我收到错误:
Exception Value:
'EventAdmin.fieldsets[0][1]['fields']' refers to field 'file_' that is
missing from the form.
这是什么问题?
file_
是您模型中的一个函数。您只能显示字段集中的字段。有效字段是 file
本身,而不是函数 file_
.
我还会在您的模板中而不是在您的模型中构建 HTML(我什至不确定这是否有效,您目前所做的)。
假设您将带有视图的对象 event
传递给模板。所以你可以在你的 HTML 模板文件中使用:
{% if event.file %}
<a href="{{ event.file.url }}">Download</a>
{% else %}
No attachment
{% endif %}
您应该这样定义您的管理员:
class EventAdmin(admin.ModelAdmin):
list_display = ('title', 'start', 'end', 'user', 'fin', 'frequency', 'file_link',)
fieldsets = (
(None, {
'fields': ('title','start', 'end', 'is_cancelled', 'calendar', 'user', 'description', ('frequency', 'fin' ), 'activated', 'file',)
}),
def file_link(self, obj):
if obj.file:
return "<a href='%s'>download</a>" % (obj.file.url,)
else:
return "No attachment"
我尝试创建一个 link 以在管理员中下载文件,但它不起作用
我的模型
class Event(models.Model):
......
file = models.FileField(_('fichier'), upload_to='medias', null=True, blank=True)
def file_(self):
if self.file:
return "<a href='%s'>download</a>" % (self.file.url,)
else:
return "No attachment"
我的管理员:
class EventAdmin(admin.ModelAdmin):
list_display = ('title', 'start', 'end', 'user', 'fin', 'frequency', 'file_',)
fieldsets = (
(None, {
'fields': ('title','start', 'end', 'is_cancelled', 'calendar', 'user', 'description', ('frequency', 'fin' ), 'activated', 'file_',)
}),
我收到错误:
Exception Value:
'EventAdmin.fieldsets[0][1]['fields']' refers to field 'file_' that is missing from the form.
这是什么问题?
file_
是您模型中的一个函数。您只能显示字段集中的字段。有效字段是 file
本身,而不是函数 file_
.
我还会在您的模板中而不是在您的模型中构建 HTML(我什至不确定这是否有效,您目前所做的)。
假设您将带有视图的对象 event
传递给模板。所以你可以在你的 HTML 模板文件中使用:
{% if event.file %}
<a href="{{ event.file.url }}">Download</a>
{% else %}
No attachment
{% endif %}
您应该这样定义您的管理员:
class EventAdmin(admin.ModelAdmin):
list_display = ('title', 'start', 'end', 'user', 'fin', 'frequency', 'file_link',)
fieldsets = (
(None, {
'fields': ('title','start', 'end', 'is_cancelled', 'calendar', 'user', 'description', ('frequency', 'fin' ), 'activated', 'file',)
}),
def file_link(self, obj):
if obj.file:
return "<a href='%s'>download</a>" % (obj.file.url,)
else:
return "No attachment"