Я хочу классифицировать по слогам в Django
Я хочу, чтобы продукты с истинным бестселлером отображались в product.html, когда slug равен "cox-satanlar". Как я могу это сделать?
models.py
from django.db import models
from mptt.models import MPTTModel, TreeForeignKey
# Create your models here.
class Category(MPTTModel):
name = models.CharField(max_length=100)
slug = models.SlugField(max_length=100, unique=True)
parent = TreeForeignKey('self', on_delete=models.CASCADE, blank=True, null=True,
related_name='children')
class MPTTMeta:
order_insertion_by = ['name']
def __str__(self):
full_path = [self.name]
k = self.parent
while k is not None:
full_path.append(k.name)
k = k.parent
return '>>'.join(full_path[::-1])
class Product(models.Model):
name = models.CharField(max_length=100)
category = models.ForeignKey(Category, on_delete=models.DO_NOTHING)
main_image = models.ImageField(upload_to='static/product_images/%Y/%m/%d/')
detail = models.TextField()
keywords = models.CharField(max_length=50)
description = models.CharField(max_length=100)
price = models.FloatField()
sale = models.IntegerField(blank=True, null=True, verbose_name="Sale (%)")
bestseller = models.BooleanField(default=False)
amount = models.IntegerField(blank=True, null=True)
available = models.BooleanField(default=True)
date_created = models.DateTimeField(auto_now_add=True)
def __str__(self):
return self.name
@property
def discount(self):
dis = float(self.price - (self.price * self.sale) / 100)
ln = ''
if len(str(dis)) > 3:
for i in str(dis):
ln += i
dis = float(ln)
if len(ln) > 3:
break
return dis
views.py
def products(request, category_slug):
category = Category.objects.all()
products = Product.objects.all().filter(category__slug=category_slug)
best_products = Product.objects.all().filter(bestseller=True)
context = {'category': category,
'products': products,
'best_products': best_products}
return render(request, 'products.html', context)
urls.py
urlpatterns = [
path('', views.index, name='index'),
path('register/', views.userRegister, name='register'),
path('login/', views.userLogin, name='login'),
path('products/<slug:category_slug>/', views.products, name='category_slug'),
]
Я делюсь важными частями HTML-кодов
products.html
<!-- Product Single -->
{% for product in products %}
{% if 'cox-satanlar' in request.paht %}
<div class="col-md-4 col-sm-4 col-xs-2">
<div class="product product-single">
<div class="product-thumb">
<div class="product-label">
<span>New</span>
{% if product.sale %}
<span class="sale">-{{product.sale}}%</span>
{% endif %}
</div>
<button class="main-btn quick-view"><i class="fa fa-search-plus"></i> Göz At</button>
<img src="{{product.main_image.url}}" alt="">
</div>
<div class="product-body">
{% if product.sale %}
<h3 class="product-price">{{product.discount}} AZN <del class="product-old-price">{{product.price}} AZN</del></h3>
{% else %}
<h3 class="product-price">{{product.price}} AZN</h3>
{% endif %}
<div class="product-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-o empty"></i>
</div>
<h2 class="product-name"><a href="#">{{product.name}}</a></h2>
<div class="product-btns">
<button class="main-btn icon-btn"><i class="fa fa-heart"></i></button>
<button class="main-btn icon-btn"><i class="fa fa-exchange"></i></button>
<button class="primary-btn add-to-cart"><i class="fa fa-shopping-cart"></i> Səbətə At</button>
</div>
</div>
</div>
</div>
{% endif %}
{% endfor %}
<!-- /Product Single -->
Надеюсь, я смог объяснить, что я хочу сделать. Когда url имеет вид http://127.0.0.1:8000/products/cox-satanlar/, товары-бестселлеры становятся реальностью
Очевидно, что существует несоответствие между тем, что я думаювы хотите, и тем, что вы на самом деле хотите, или где-то еще есть ошибка. Я только что попробовал ваш код, добавив "A Best Seller" в поле названия одного продукта, и "Not a Best Seller" в поле другого продукта, с приведенным ниже кодом в качестве products.html (NOTEя использовал sky в качестве slug вместо cox-satanlar):
{% for product in products %}
{% if 'sky' in request.path and product.bestseller %}
<div class="col-md-4 col-sm-4 col-xs-2">
<div class="product product-single">
<div class="product-thumb">
<div class="product-label">
<span>New</span>
{% if product.sale %}
<span class="sale">-{{product.sale}}%</span>
{% endif %}
</div>
<button class="main-btn quick-view"><i class="fa fa-search-plus"></i> Göz At</button>
<img src="{{product.main_image.url}}" alt="">
</div>
<div class="product-body">
{% if product.sale %}
<h3 class="product-price">{{product.discount}} AZN <del class="product-old-price">{{product.price}} AZN</del></h3>
{% else %}
<h3 class="product-price">{{product.price}} AZN</h3>
{% endif %}
<div class="product-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-o empty"></i>
</div>
<h2 class="product-name"><a href="#">{{product.name}}</a></h2>
<div class="product-btns">
<button class="main-btn icon-btn"><i class="fa fa-heart"></i></button>
<button class="main-btn icon-btn"><i class="fa fa-exchange"></i></button>
<button class="primary-btn add-to-cart"><i class="fa fa-shopping-cart"></i> Səbətə At</button>
</div>
</div>
</div>
</div>
{% endif %}
{% endfor %}
{% endblock %}
И что я получаю, так это следующее:
Обратите внимание, что "A Best Seller" появляется, потому что я сделал поле бестселлера True, но другой продукт, "Not a Best Seller" не появляется, потому что он не является таковым.
Разве это не то, о чем вы просите, или я что-то пропустил?
