有一个模型Language
。语言对象通过Django-admin
. 他们必须从下拉菜单中选择适当的标志文件。
问题是我部署项目时没有可供选择的标志。
由于在部署之前正在收集静态文件,因此我尝试设置此路径:
flag = models.FilePathField(path='static/img/flags/550px',default='')
但正如你所见,它什么也找不到。
如果我这样做,我可以从标志中进行选择:
flag = models.FilePathField(path=settings.BASE_DIR+'/static/img/flags/550px',default='')
但是它不能仅仅调用language.flag
,因为它返回绝对路径。
<img src = "{{ language.flag }}">
产生这个:
<img src="/home/django/MyProject/static/img/flags/550px/ar.png">
我想到的唯一解决方案是创建一个剥离path
切割“/home/django/MyProject/”的属性,但我不确定这是否是个好主意。
有没有更好的办法?
class Language(models.Model):
shortcut = models.CharField(max_length=40,
help_text=_('Shortcut of the language'),
unique=True)
name = models.CharField(max_length=40,
help_text=_('Name of the language'),
unique=True, verbose_name=_("Language"))
flag = models.FilePathField(path='static/img/flags/550px',default='/static/img/icons/check-icon.png')
def __str__(self):
return self.name
编辑:
管理员.py:
from django.contrib import admin
from models import Language
admin.site.register(Language)