Задать вопрос
@ma3xak

Как вывести фотки в первью?

Пишу небольшой проект, требуется вывести список объектов, с фотографией, так как для одной записи требуются несколько фоток, то использую доп модель для вывода.
class realty(models.Model):

	ROOMS_CHOICES = (
		('1 ком','1 ком'),
		('2 ком','2 ком'),
		('3 ком','3 ком'),
		('4 ком','4 ком'),
		('Более','Более'),
		)


	WINDOW_CHOICES = (
		('Пластиковые','Пластиковые'),
		('Деревянные','Деревянные'), 
		('Алюминевые','Алюминевые'), 
		('Металопластиковые','Металопластиковые')
		)
	REPAIRS_CHOICES = (
		('Капитальный','Капитальный'), 
		('Евроремонт','Евроремонт'), 
		('Космитический','Космитический'),
		('Требует ремонта','Требует ремонта') 
		)

	RAYON_CHOICES = (
		('Железнодорожный','Железнодорожный'),
		('Кировкий','Кировкий'),
		('Ленинский','Ленинский'),
		('Октябрьский','Октябрьский'),
		('Свердловский','Свердловский'), 
		('Советский','Советский'),
		('Центральный','Центральный')
		)
	photo = models.ForeignKey('photos', on_delete = models.CASCADE, editable = False, blank = False, null = True, default = None)#Фотки объекта
	rooms = models.CharField(verbose_name = 'Количество комнат', max_length=200, blank=False, default=None, null=True, choices=ROOMS_CHOICES)#Количество комнат
	etaj = models.DecimalField(verbose_name = 'Этаж', max_digits = 3, decimal_places=0)#Количество этажей 
	heigth = models.DecimalField(verbose_name = 'Высота потолков', max_digits = 5, decimal_places=2)#Высота потолка 
	window = models.CharField(verbose_name = 'Окна', max_length = 30, blank = True, default=None, choices=WINDOW_CHOICES)#Комнтаы 
	age = models.DateField(verbose_name = 'Год посторойки', auto_now = False, auto_now_add=False)#Год посторйки 
	price = models.DecimalField(verbose_name = 'Стоимость', max_digits = 8, decimal_places= 0)#Стоимость 
	price_metr = models.DecimalField(verbose_name = 'Стоимость за метр', max_digits = 8, decimal_places = 3)#Стоимость за метр
	ploshad = models.DecimalField(verbose_name = 'Площадь', max_digits = 4, decimal_places = 1 )#Площадь квартиры
	layout = models.CharField(verbose_name = 'Планировка', max_length = 200, blank = False, default = None, null= True)#Планировка 
	repairs = models.CharField(verbose_name = 'Ремонт', max_length = 100, blank = False, default = None, null = True, choices = REPAIRS_CHOICES)#Ремонт 
	territory = models.CharField(verbose_name = 'Описание территории', max_length = 250, blank = False,default = None, null = True)#Описание территории 
	text = models.TextField(verbose_name = 'Описание квартиры', )#Текстовое поле описание квартиры
	rayon = models.CharField(verbose_name = 'Район', max_length=200, blank = False, default = None, null = True, choices = RAYON_CHOICES)#Район
	adress = models.CharField(verbose_name = 'Адрес', max_length= 250, blank = True, default = None, null = True)#Адрес 
	realty_type = models.ForeignKey('type_realty',verbose_name = 'Тип недвижимости', on_delete = models.CASCADE)#Сслыка на таблицу с недвижимостью 

	def realty_save(self): 
		price_to_metr = self.price / self.ploshad
		self.price_metr = price_to_metr
		self.save()

	def __str__(self): 
		return self.adress

	def get_absolute_url(self):
		return "/realty/%i/" % self.id


'''Модель с типами недвижимости'''



class photos(models.Model):
	realtys = models.ForeignKey('realty', on_delete = models.CASCADE)
	photo = models.ImageField(verbose_name = "Фотография", upload_to='realty_upload')
	date = models.DateField(verbose_name = 'Дата загрузки', auto_now_add = True)


Views

from django.shortcuts import render
from property.models import realty, type_realty, photos
from django.views.generic import ListView, DetailView
# Create your views here.


class PostsListView(ListView): 
	model = realty

class PostDetailView(DetailView): 
	model = realty


Шаблон

{% extends 'base.html' %}
{% block content %}
<div class="container-fluid container-content">
	<div class="row">
		<div class="col-xl-6 col-lg-6 col-xs-12 col-12">
		<div class="row">	
 			{% for post in object_list %}
 			<div class="col-xl-6 col-lg-6 col-xs-12 col-12">
 				<div class="card card-my" style="width: 18rem;">
  					<img class="card-img-top" src="{{post.photo}}" alt="Card image cap">
  					<div class="card-body">
    					<h5 class="card-title card-title-my">{{post.adress}}</h5>
    					<p class="card-text"><p>Стоимость {{post.price}} <span class="rub">Р</span><br> Площадь: {{post.ploshad}}<br>
    					Район: {{post.rayon}}</p></p>
    					<a href="{{post.get_absolute_url}}" class="btn btn-success">Подробнее</a>
          </div>
					</div>
				</div>
        	{% empty %}
    		<p>В данном разделе нет объектов</p>
    		{% endfor %}
    	</div>
    </div>
			<div class="col-xl-5 col-lg-5 col-xs-12 col-12">
				Тут будет мапа
        {{realty.photo}}
			</div>
	</div>
</div>
{% endblock %}
  • Вопрос задан
  • 136 просмотров
Подписаться 2 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 2
crazyzubr
@crazyzubr
Python backend-developer
Исходя из данной модели, так:

<img class="card-img-top" src="{{ post.photo.photo.url }}">
Ответ написан
Комментировать
half-life
@half-life

etaj
heigth
ploshad
rayon

Ты серьёзно?
Зачем я это увидел >_
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы