2016-10-18 2 views
0

Я пробовал несколько методов о том, как получить изображение с модели без везения, вот где я нахожусь. Я бы хотел, чтобы изображение было показано, и когда пользователь нажимает на него, он открывает модальное отображение деталей проекта.Django показать фотографию с модели

models.py

class Project(models.Model): 
    author = models.ForeignKey('auth.User') 
    title = models.CharField(max_length=200) 
    client = models.CharField(max_length=200) 
    date = models.DateField(timezone.now()) 
    service = models.CharField(max_length=200) 
    info = models.TextField() 
    photo = models.ImageField(upload_to='ports/static/img/', 
          default='ports/static/img/port_photo.png', 
          height_field='photo_height', 
          width_field='photo_width',) 
    photo_height = models.PositiveIntegerField(blank=True, default=900) 
    photo_width = models.PositiveIntegerField(blank=True, default=650) 
    created_date = models.DateTimeField(
    default=timezone.now) 
    published_date = models.DateTimeField(
    blank=True, null=True) 


index.html

<section id="portfolio"> 
    {% for project in projects %} 
     <div class="row"> 
      <div class="col-lg-12 text-center"> 
       <h2>Portfolio</h2> 
       <hr class="star-primary"> 
      </div> 
     </div> 
     <div class="row"> 
      <div class="col-sm-4 portfolio-item"> 
       <a href="#portfolioModal1" class="portfolio-link" data-toggle="modal"> 
        <div class="caption"> 
         <div class="caption-content"> 
          <i class="fa fa-search-plus fa-3x"></i> 
         </div> 
        </div> 
        <img src="{{ projects.photo.url }}" class="img-responsive" alt=""> 
       </a> 
      </div> 
     </div> 
    </div> 
    {% endfor %} 
</section> 

views.py

from django.shortcuts import render 
from .forms import ContactForm 
from django.utils import timezone 
from .models import Project 
# Create your views here. 


def index(request): 
    form_class = ContactForm 
    projects = Project.objects.filter(published_date__lte=timezone.now()).order_by('-published_date') 
    return render(request, 'ports/index.html', {'form': form_class, 'projects': projects}) 

ответ

1

Посмотрите на свой img теге. В атрибуте src используется {{ projects.photo.url }}. Таким образом, вы не можете получить изображение из набора запросов, вы можете сделать это только с объекта модели Project. Используйте {{ project.photo.url }}

+0

Спасибо так много я должен был изменить –

+0

.... фото = models.ImageField (upload_to = 'портов/статический/IMG /', по умолчанию = 'портов/статический/IMG/port_photo.png' , height_field = 'PHOTO_HEIGHT', width_field = 'PHOTO_WIDTH') –

+0

к фото = models.ImageField (upload_to = 'статический/IMG /', по умолчанию = 'статический/IMG/port_photo.png', height_field = 'photo_height', width_field = 'photo_width',) и перенести БД, а затем загрузить изображение. –

Смежные вопросы