Il existe un modèle Language
. Les objets de langage créent Admin via Django-admin
. Ils doivent choisir dans le menu déroulant du fichier de drapeau approprié.Django FilePathField ne fonctionne pas avec le chemin relatif
Le problème est qu'il n'y a pas d'indicateur à choisir lorsque je déploie un projet.
Puisque les fichiers statiques sont recueillis avant Deploy, j'ai essayé de définir ce chemin:
flag = models.FilePathField(path='static/img/flags/550px',default='')
Mais comme vous pouvez le voir, il ne trouve rien.
Je peux choisir de drapeaux si je fais ceci:
flag = models.FilePathField(path=settings.BASE_DIR+'/static/img/flags/550px',default='')
Mais il ne fonctionne pas seulement d'appeler language.flag
car elle retourne un chemin absolu.
<img src = "{{ language.flag }}">
ce produit:
<img src="/home/django/MyProject/static/img/flags/550px/ar.png">
La seule solution qui me vient à l'esprit est de créer une propriété qui bandes path
coupe "/ home/django/MyProject /" mais je ne suis pas sûr c'est une bonne idée.
Y a-t-il un meilleur moyen?
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
EDIT:
Admin.py:
from django.contrib import admin
from models import Language
admin.site.register(Language)
Non, quand je fais {{}} language.flag dans modèle que je reçois/home/django/myproject/static/... mais j'ai besoin/statique/.... donc je ne comprends pas quoi faire. –
Fixez d'abord les incohérences dans votre question. Ensuite, ajoutez l'administrateur. Je suppose que vous pourriez avoir un problème là – e4c5
Quelles incohérences voulez-vous dire? J'ai corrigé un chemin.Le problème est que FilePathField me permet de choisir parmi les drapeaux s'il y a un chemin absolu (BASE_DIR +/static/....). Mais quand je choisis des drapeaux de cette façon, alors, dans le template, {{language.flag}} renvoie/home/django/myproject/static/... mais j'ai juste besoin de/static/.... –