'how do I get all the objects associated with a foreignkey field
How do I get all the objects associated with the foreignkey field in "ProductImage". So I've multiple images for one "Product" model in "ProductImage", how do I get all of the associated ones. Currently, I'm getting an error "MultipleObjectsReturned at /shop/product-slug" idk what I'm doing wrong, would appreciate it a lot if someone can help! thx!
models.py
class Product(models.Model):
name = models.CharField(max_length=150)
description = models.TextField()
image = models.ImageField(null=True, blank=True)
class ProductImage(models.Model):
product = models.ForeignKey(Product, on_delete=models.CASCADE)
name = models.CharField(max_length=50)
image = models.ImageField(null=True, blank=True, upload_to='productimg/')
urls.py
path("<slug:slug>", views.detail_view, name="detail_view"),
views.py
def detail_view(request, slug):
products = Product.objects.get(slug=slug)
productimg = ProductImage.objects.get(product=products)
Solution 1:[1]
To find all related objects in Django, use filter method that returns a queryset, use get method instead if you know there is only one object that matches your query.
Read more in the official Django documentation
Another tip: when using get, it's highly recommended you surround it with try except block in order to make your code brokenless if the selected object is not found. Your code could be like that :
def detail_view(request, slug):
try:
products = Product.objects.get(slug=slug)
productimg = ProductImage.objects.filter(product=products)
except Product.DoesNotExist as e:
print(f"My error {e}")
# ... other error handling
for image in productimg :
# your logic here
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 |
