Django объединение нескольких таблиц - PullRequest
0 голосов
/ 13 марта 2020

Я работаю с сайтом электронной коммерции. Мне нужно добавить несколько вариантов для одного продукта. ie. Рубашка может быть разного цвета и размера.

Мои модели идут здесь:

Class Product (models.Model):
     product_name= models.CharField(max_length=150)
     ..
     ..
     ..

     def __str__(self):
          return self.product_name



class Color(models.Model):
     product = models.Forignkey(Product, on_ delete = models.CASCADE)
     color_name = models.CharField(max_length=150)
     ..
     ..
     ..

     def __str__(self):
          return f'{self.product.product_name} |{self.color_name}'



class Size(models.Model):
     product = models.Forignkey(Product, on_ delete = models.CASCADE)
     size_letter = models.CharField(max_length=150)
     ..
     ..
     ..

     def __str__(self):
          return f'{self.product.product_name} | {self.size_letter}




class Productimage(models.Model):
     product = models.ForeignKey(Product, on_delete = models. CASCADE)
     image_1 = models.ImageField(default ='product.jpg', upload_to ='product_images')
     ..
     ..
     ..

     def __str__(self):
          return f'{self.product.product_name} - images'

И мой взгляд

Class ProductDetailView(ListView):
     template_name = 'customer/product_detail.html'
     model = Product

Как я могу получить доступ ко всем продуктам на одной странице ?? С его изображениями на шаблоне. Мне нужен доступ ко всей приведенной выше таблице при запросе только к таблице Product.

Я пытался с

Product.objects.filter(productimage__product=1)

Но это возвращает одиночную строку .. Мне нужны все объекты

Я думаю, что это своего рода объединение этих таблиц с использованием product_id.

Но не знаю, как объединить эти таблицы.

Действительно нужна помощь .. Я застрял .. !!

Заранее спасибо .. ?

1 Ответ

0 голосов
/ 13 марта 2020

Чтобы получить все продукты:

Product.objects.all()

Также с дополнительной информацией:

Product.objects.all().prefetch_related('colors', 'sizes', 'productimage')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...