Django Пытаюсь вывести данные, которые я добавил в DetailView через get_context_data()
Я создаю простое приложение для работы с недвижимостью, где пользователи могут создавать поместья. Модель поместья имеет одно главное изображение, но пользователь может загружать несколько изображений, используя для этого другую модель и форму. На странице подробностей поместья, которая является DetailView, я хочу отобразить изображения и информацию о пользователе, который является владельцем текущего поместья. Я передаю вышеуказанную информацию с помощью get_context_data(). При отладке все выглядит нормально, контекст содержит информацию о пользователе и изображения, но эта информация не отображается. Не могли бы вы помочь мне с этой проблемой?
моя модель пользователя связана с текущим поместьем следующим образом:
class Estate(models.Model): user = models.ForeignKey( UserModel, on_delete=models.CASCADE, )
Это EstateImagesModel
class EstateImages(models.Model):
IMAGE_UPLOAD_TO_DIR = 'estates/'
estate = models.ForeignKey(
Estate,
related_name='images',
on_delete=models.CASCADE,
)
image = models.FileField(
upload_to=IMAGE_UPLOAD_TO_DIR,
)
а детальный вид -
class EstateDetailsView(views.DetailView):
model = Estate
template_name = 'main/estates/estate_details.html'
context_object_name = 'estate'
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context['is_owner'] = self.object.user == self.request.user
estate_images = list(EstateImages.objects.filter(estate_id=self.object.id))
seller = Profile.objects.filter(user_id=self.object.user_id)
context.update({
'estate_images': estate_images,
'seller': seller,
})
return context
в шаблоне, вот как я пытаюсь получить доступ к контекстным данным
{% for image in estate_images %}
<div class="carousel-item-b swiper-slide">
<img src="{{ image.url }}" alt="">
</div>
{% endfor %}
seller не отображается, потому что вы передаете контексту queryset, а не реальный экземпляр model. Я предлагаю изменить строку, в которой вы определяете продавца, на:
seller = Profile.objects.filter(user_id=self.object.user_id).first()