Ho il seguente modello nel mio Django app:Come ottenere un URL ImageField all'interno di un modello?
class Image(models.Model):
image = models.ImageField(
upload_to='images/',
height_field='height',
width_field='width'
)
credit = models.CharField(max_length=50, blank=True)
caption = models.TextField(blank=True)
article = models.ForeignKey(Article)
width = models.PositiveIntegerField(
blank = True, null = True,
editable = False,
default = 0
)
height = models.PositiveIntegerField(
blank = True, null = True,
editable = False,
default = 0
)
ho impostato il root_supporto ad una directory chiamata/hmedia/dentro la mia radice Web Apache, e ho impostato MEDIA_URL a 'http://localhost/hmedia/'
. Questo sembra aver funzionato - Ho caricato con successo un paio di immagini attraverso il sito di amministrazione di Django, e posso visualizzare quelle immagini tramite http://localhost/hmedia/images/[filename]
. E il sito di amministrazione di Django in realtà mi mostra il nome del file e link all'URL live per ogni immagine, e i collegamenti funzionano.
Il mio problema è che non riesco a capire come ottenere gli URL o nomi di file di queste immagini nel mio modello:
<ul>
{% for image in article.image_set.all %}
<li>Caption: "{{image.caption}}", Credit: "{{image.credit}}", URL: "{{image.url}}"</li>
{% endfor %}
</ul>
I risultati del modello di cui sopra in questa uscita:
<ul>
<li>Caption: "here's an image caption", Credit: "some photographer", URL: ""</li>
<li>Caption: "Another caption here", Credit: "Another photographer", URL: ""</li>
</ul>
In altre parole, restituisce correttamente le proprietà di didascalia e credito di ciascuna immagine, ma non genera nulla per {{image.url}}.
Come ottengo l'URL dell'immagine nel mio modello? Come funziona il modello di interfaccia di amministrazione di Django? (Ho radicato in giro nella directory dei modelli di amministrazione, ma non riesco a trovare quello che sto cercando.)
Hai solo bisogno di accedere .path e .url sul campo immagine stessa - così 'image.image.path', 'Image.image.url'. Così com'è, stai cercando di accedere a quegli attributi sull'istanza del modello, dove non esistono. – AdamKG