Фильтрация данных на основе внешнего ключа в Django - PullRequest
0 голосов
/ 19 сентября 2018

Я новичок в Джанго.Я не мог понять это на основе моей модели.У меня есть одна таблица продуктов и одна таблица изображений продуктов.В таблице Image продукта у меня есть внешний ключ таблицы Product.Теперь я хотел бы отобразить все изображения на основе внешнего ключа таблицы продуктов.Как мне это сделать.У меня есть много продуктов, которые я могу сделать только по одному конкретному идентификатору или по имени, но я не хочу этого, потому что у меня есть сотни продуктов, которые мне нужно извлекать данные изображений динамически на основе внешнего ключа.

Я могу сделатьизображение одного продукта в этом примере.

p = Product.objects.get(pk=1)
pimage = Product_Image.objects.filter(product_image=p)

, но эта база данных только вручную, pk = 1 Я надеюсь, вы поняли мою точку зрения.Я хочу отфильтровать данные много продукта, я не могу упомянуть каждый запрос на основе идентификатора.Поэтому, пожалуйста, помогите мне.IN php очень прост, я могу сохранить идентификатор в переменной, а затем использовать Where Clause для сопоставления записи.

Как я могу отобразить на шаблоне.

Буду признателен за вашу помощь.

Моя модель выглядит следующим образом.

    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)
...