models.py
class ProductVariantsImages(DateTimeModel):
product_variant = models.ForeignKey(ProductVariants, on_delete=models.CASCADE,
related_name='product_variants_images')
variant_images = models.ImageField(upload_to='uploads/')
def __str__(self):
return str(self.id)
HTML
<div >
{{variant_images}}
</div>
views.py
@login_required
def item_approval(request, pk):
if request.method == "GET":
product_form = AdminProductForm(request.POST)
item = ProductVariants.objects.get(item_num=pk)
variant_images = ProductVariantsImages.objects.filter(product_variant=item)
print(variant_images)
product_form = AdminProductForm(instance=product)
item_form = ProductVariantsForm(instance=item)
variant_images = ProductVariantsImagesForm(instance=product_variant_images)# here I get multiple objects
print(variant_images)
return render(request, 'loom_admin/product_details.html',
{'item_form':item_form, 'product':product,
'product_form':product_form,
'variant_images':variant_images,
})
while running I get 'QuerySet' object has no attribute '_meta' when I put variant_images = ProductVariantsImagesForm(instance=product_variant_images[0]) the error disappear. But I am getting first image object. What if I want to do to get multiple images that related to the filter query in django template?
CodePudding user response:
You can use a for loop in your template HTML. for example >>
{% for image in variant_images %}
<li> {{ variant_images.image }} </li>
{% endfor %}
something like this will show you the list of images
CodePudding user response:
Rename this:
in views.py
variant_images = ProductVariantsImagesForm(instance=product_variant_images)
to:
variant_images_form = ProductVariantsImagesForm(instance=product_variant_images)
You have the same names, and you end up with the wrong thing.
