Django 试图呈现我通过 get_context_data() 添加到 DetailView 的数据
Django Trying to render the data that i added to a DetailView via get_context_data()
我正在制作一个简单的房地产应用程序,用户可以在其中创建 Estates。 Estate 模型有一个主图像,但用户可以使用另一个模型和表单上传多个图像。在作为 DetailView 的庄园详细信息页面上,我想显示有关作为当前庄园所有者的用户的图像和信息。我正在使用 get_context_data() 传递上述信息。虽然调试一切对我来说似乎都很好,但上下文包含有关用户和图像的信息,但不会呈现此信息。你能帮我解决这个问题吗?
我的用户模型通过以下方式链接到当前房产:
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 # this works fine
estate_images = list(EstateImages.objects.filter(estate_id=self.object.id)) # returns a [<EstateImages: EstateImages object (10)>]
seller = Profile.objects.filter(user_id=self.object.user_id) # returns a <QuerySet [<Profile: Profile.First Name Profile.Last Name>]>
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 %}
对于用户:
<div class="property-agent">
<h4 class="title-agent">{{ seller.full_name }}</h4>
<p class="color-text-a">
{{ seller.description }}
</p>
seller
未呈现,因为您将 queryset 传递给上下文,而不是实际的 模型实例 .我建议将您定义卖家的行更改为:
seller = Profile.objects.filter(user_id=self.object.user_id).first()
编辑:也发现图像渲染问题中的错误:
{% for estate_image in estate_images %}
<div class="carousel-item-b swiper-slide">
<img src="{{ estate_image.image.url }}" alt="" />
</div>
{% endfor %}
我正在制作一个简单的房地产应用程序,用户可以在其中创建 Estates。 Estate 模型有一个主图像,但用户可以使用另一个模型和表单上传多个图像。在作为 DetailView 的庄园详细信息页面上,我想显示有关作为当前庄园所有者的用户的图像和信息。我正在使用 get_context_data() 传递上述信息。虽然调试一切对我来说似乎都很好,但上下文包含有关用户和图像的信息,但不会呈现此信息。你能帮我解决这个问题吗?
我的用户模型通过以下方式链接到当前房产:
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 # this works fine
estate_images = list(EstateImages.objects.filter(estate_id=self.object.id)) # returns a [<EstateImages: EstateImages object (10)>]
seller = Profile.objects.filter(user_id=self.object.user_id) # returns a <QuerySet [<Profile: Profile.First Name Profile.Last Name>]>
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 %}
对于用户:
<div class="property-agent">
<h4 class="title-agent">{{ seller.full_name }}</h4>
<p class="color-text-a">
{{ seller.description }}
</p>
seller
未呈现,因为您将 queryset 传递给上下文,而不是实际的 模型实例 .我建议将您定义卖家的行更改为:
seller = Profile.objects.filter(user_id=self.object.user_id).first()
编辑:也发现图像渲染问题中的错误:
{% for estate_image in estate_images %}
<div class="carousel-item-b swiper-slide">
<img src="{{ estate_image.image.url }}" alt="" />
</div>
{% endfor %}