我是Django的新手。根据我的模型,我无法弄清楚。我有一个产品表和一个产品图像表。在产品图像表中,我具有产品表的外键。现在,我想显示基于产品表外键的所有图像。我怎样才能做到这一点。我有很多产品可以通过一个特定的ID或名称来完成,但我不希望这样做,因为我有数百种产品需要基于外键动态获取图像数据。
通过这个示例,我可以制作单个产品图片。
p = Product.objects.get(pk=1)
pimage = Product_Image.objects.filter(product_image=p)
但是该数据仅基于手动pk = 1希望您能理解。我想过滤很多产品数据,我无法根据ID提及每个查询。所以请帮帮我。在php中非常简单,我可以将ID存储在变量中,然后使用Where子句匹配记录。
我也如何在模板上显示。
感谢您的帮助。
我的模型如下。
class Product(models.Model):
product_category = models.ForeignKey(Category, on_delete=models.CASCADE)
product_name = models.CharField(max_length=250, unique=True)
product_slug = models.SlugField(max_length=250, unique=True)
product_description = models.TextField(blank=True)
product_price = models.DecimalField(max_digits=10, decimal_places=2)
product_stock = models.IntegerField()
product_available = models.BooleanField(default=True)
product_created = models.DateTimeField(auto_now_add=True)
product_updated = models.DateTimeField(auto_now=True)
class Meta:
ordering = ('-product_created',)
verbose_name = 'product'
verbose_name_plural = 'products'
def __str__(self):
return '{}'.format(self.product_name)
# Image Model with thumbnail generation
class Product_Image(models.Model):
product = models.ForeignKey(Product, related_name='images', on_delete=models.CASCADE)
product_image_created = models.DateTimeField(auto_now_add=True)
product_image_updated = models.DateTimeField(auto_now=True)
product_image = ProcessedImageField(upload_to='product',
processors=[ResizeToFill(400,400)],
format='JPEG',
options={'quality': 80})
class Meta:
ordering = ('-product_image_created',)
verbose_name = 'product-image'
verbose_name_plural = 'products-images'
def __str__(self):
return '{}'.format(self.product_image)