Как получить соответствующий товар в Django? - PullRequest
0 голосов
/ 01 августа 2020

У меня есть продукты по категориям в моем приложении Django, я получаю продукты в определенной категории, и когда я перехожу на страницу просмотра одного продукта, мне нужен продукт, связанный с одной категорией продукта, я хочу, чтобы там были связанные продукты, который доступен на вышеприведенной странице просмотра одного продукта.

Вот мой models.py файл для subcategory и product

class Product(models.Model):
    name=models.CharField(max_length=225)
    slug=models.SlugField(max_length=225, unique=True)
    subcategory=models.ForeignKey('SubCategory', related_name='prosubcat', on_delete=models.CASCADE, blank=True, null=True)
    brand=models.ForeignKey('Brand', related_name='product_brand', on_delete=models.CASCADE, blank=True, null=True)
    supplement= models.ForeignKey('Supplement', related_name='product_supplement', on_delete=models.CASCADE, blank=True, null=True)
    totalprice=models.IntegerField()
    price = models.IntegerField()
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)

def __str__(self):
    return self.name

class SubCategory(models.Model):
    subcat_name=models.CharField(max_length=225)
    subcat_slug=models.SlugField(max_length=225, unique=True)
    category = models.ForeignKey('Category', related_name='subcategoryies', on_delete=models.CASCADE, blank=True, null=True)
    created_at = models.DateTimeField(auto_now_add=True)
    update_at = models.DateTimeField(auto_now=True)

    def __str__(self):
        return self.subcat_name

вот мой views.py файл ... для отображения одного вида продукта

def productview(request, slug):
    category = Category.objects.all()
    subcategories = SubCategory.objects.all()
    product = Product.objects.select_related('subcategory').get(slug=slug)
    #test=product.subcategory_id.all()
    related = Product.objects.select_related('subcategory')[0:6]
    template_name='mainpage/product-view.html'
context={'product':product,'related':related, 'category':category, 'subcategories':subcategories}
return render(request, template_name, context)

Я получаю продукты из всех подкатегорий, используя related, и я хочу отфильтровать из product вот мой product-view.html файл ...

 {% for relatedpro in related %}
            <div class="col-xl-2 col-md-4 col-sm-6">
                <div class="product-box">
                    <div class="img-wrapper">
                        <div class="front">
                            <a href="/product/{{relatedpro.slug}}" class="bg-size blur-up lazyloaded"><img src="{{relatedpro.first_image.image.url}}" class="img-fluid blur-up lazyload bg-img" alt="" style="display: none;"></a>
                        </div>
                        <div class="back">
                            <a href="/product/{{relatedpro.slug}}" class="bg-size blur-up lazyloaded"><img src="{{relatedpro.first_image.image.url}}" class="img-fluid blur-up lazyload bg-img" alt="" style="display: none;"></a>
                        </div>
                        <div class="cart-info cart-wrap">
                            <!-- data-toggle="modal" data-target="#addtocart" -->
                            <button data-product={{relatedpro.id}} data-action="add" class="btn-btn-outline-secondary add-btn update-cart" title="Add to cart"><i class="ti-shopping-cart"></i></button> 
                            <a href="javascript:void(0)" title="Add to Wishlist"><i class="ti-heart" aria-hidden="true"></i></a> 
                            <a href="#" data-toggle="modal" data-target="#quick-view" title="Quick View"><i class="ti-search" aria-hidden="true"></i></a> 
                            <a href="javascript:void()" title="Compare"><i class="ti-reload" aria-hidden="true"></i></a>
                        </div>
                    </div>
                    <div class="product-detail">
                        <!-- <div class="rating"><i class="fa fa-star"></i> <i class="fa fa-star"></i> <i class="fa fa-star"></i> <i class="fa fa-star"></i> <i class="fa fa-star"></i></div> -->
                        <a href="/product/{{relatedpro.slug}}">
                            <h6>{{relatedpro.name}}</h6>
                        </a>
                        <h4>₹ {{relatedpro.price}}</h4>
                    </div>
                </div>
            </div>
            {% endfor %}
...