2016-01-05 30 views
5

Mam problemy z uzyskaniem adresu URL obrazu z formularza django.Pobierz adres URL obrazu z django z formularza

Model:

class Sponsor(models.Model): 
    image = ProcessedImageField(upload_to='sponsors/', 
           processors=[SmartResize(300, 120, upscale=False)], 
           format='JPEG', 
           options={'quality': 100}, 
           null=True) 

Postać:

class SponsorForm(forms.ModelForm): 

    class Meta: 
     model = Sponsor 
     fields = ('image',) 

Kiedy czynią go za pomocą:

{{ sponsorform.image }} 

Drukuje:

Currently: <a href="/media/sponsors/random1.jpg">sponsors/random1.jpg</a> <br>Change: <input id="id_sponsor-image" name="sponsor-image" type="file"> 

Moje pytanie brzmi: jak uzyskać ten URL w szablonach? Próbowałem:

{{ sponsorform.image.url }} 
{{ sponsorform.image.path }} 
{{ sponsorform.image.href }} 

Ale nic nie działa, jakieś sugestie?

+0

Myślę, że to samo pytanie http://stackoverflow.com/questions/34563454/django-imagefield-upload-to-path/34563512#34563512 You mogę sprawdzić moją odpowiedź –

+1

@Baterson: Myślę, że OP próbował uzyskać adres URL obrazu z formularza nie z obiektów. –

+0

@ShangWang Tak, masz rację, nie zauważyłem –

Odpowiedz

3

Powinieneś spróbować {{ sponsorform.instance.image.url }}. W przypadku, gdy forma jest nieograniczona, można po prostu zrobić:

{% if sponsorform.instance.image %} 
    {{ sponsorform.instance.image.url }} 
{% endif %} 
+0

Działa, jeśli jest obraz, ale dla nowych instancji formularza, które podnosi: ValueError at/onsite_api/get_sponsor_form/-1/Atrybut "image" nie ma z nim powiązanego pliku. – Zoli

+0

Oczywiście, myślałem, że można się tego spodziewać. Edytowałem swoją odpowiedź. –