Python 如何按特定类别显示我的产品

Python 如何按特定类别显示我的产品,python,django,e-commerce,categories,Python,Django,E Commerce,Categories,所以我正在制作一个ecom站点,我正在使用Django。我是一个新手,我正在使用一个教程,但我已经开始接触它,因为我想在我的网站上有两个类别,也许将来会有更多。我希望能够按类别显示它们,我请求有关discord服务器的帮助,一些人试图提供帮助,它确实贯穿了我的所有产品,但我有一个if语句,if语句被忽略 那么,有谁能告诉我一种方式来显示其类别设置为特价商品的产品吗?还是只有帽盒 Store.Html models.py 管理员 代码中的if语句不会像{%if products.categorie

所以我正在制作一个ecom站点,我正在使用Django。我是一个新手,我正在使用一个教程,但我已经开始接触它,因为我想在我的网站上有两个类别,也许将来会有更多。我希望能够按类别显示它们,我请求有关discord服务器的帮助,一些人试图提供帮助,它确实贯穿了我的所有产品,但我有一个if语句,if语句被忽略

那么,有谁能告诉我一种方式来显示其类别设置为特价商品的产品吗?还是只有帽盒

Store.Html models.py 管理员
代码中的if语句不会像
{%if products.categories==Hatbox%}
中的
产品
那样工作,因为它不是单个类别对象,所以没有任何类别。if语句在
Hatbox
周围也缺少引号。请尝试以下操作:

观点

store.html

    {% for category in categorys %}
        <h1>{{ category.nameOfCategory }}</h1>
        {% for product in category.product_set.all %}
            {{ product.name }}
            {{ product.price }}
            {{ product.size.size }}
        {% endfor %}
    {% endfor %}
{%用于类别中的类别%}
{{category.nameOfCategory}
{category.product_set.all%}中的产品为%
{{product.name}
{{product.price}}
{{product.size.size}
{%endfor%}
{%endfor%}

阅读添加文档和一些StackOverflow链接以及相关名称。

在将其传递给模板之前,先在视图中对其进行筛选。或者,修复您的if块。修复我的if块?
{%for products%}
首先,然后
{%if-product.category==Hatbox%}
(比较两个字符串,idk如果需要“Hatbox”或不只是尝试),然后根据顺序关闭它。我已经尝试过了,但它不起作用。什么意思是它不起作用?错误?不生成预期答案?不,不工作-它显示所有答案,但返回所有答案的大小-不工作是什么意思?什么不起作用?您是否尝试先显示类别,然后再显示该类别内的所有产品?比如:类别1->产品1,产品2,然后是类别2->产品3是的,但我尝试了你的代码,它没有显示特定类别中项目的大小我已经更新了答案,请阅读
相关的\u名称的链接文章
。除非在其他与视图集无关的地方出现问题,否则应该可以使用。。。

from django.shortcuts import render
from .models import *

# Create your views here.
def store(request):
    products = Product.objects.all()
    categorys = Category.objects.all()

    size = Size.objects.all()
    context = {
        "categorys":categorys,
        'products':products,
        'size':size
    }
    return render(request, 'store/store.html', context)

def cart (request):
    context = {}
    return render(request, 'store/cart.html', context)

def checkout(request):
    context = {}
    return render(request, 'store/checkout.html', context)

def index(request):
    context = {}
    return render(request, 'store/index.html', context)

def contacts(request):
    context = {}
    return render(request, 'store/contacts.html', context)


from django.db import models
from django.contrib.auth.models import User

# Create your models here.

class Customer(models.Model):
    user = models.OneToOneField(User, null=True, blank=True, on_delete=models.CASCADE)
    name = models.CharField(max_length=200, null=True)
    email = models.CharField(max_length=200)

    def __str__(self):
        return self.name

class Category(models.Model):
    nameOfCategory = models.CharField(max_length=200)

    def __str__(self):
        return self.nameOfCategory

class Size(models.Model):
    size = models.CharField(max_length=200)

    def __str__(self):
        return self.size

class Product(models.Model):
    name = models.CharField(max_length=200, blank=True)
    size = models.ForeignKey(Size, null=True, blank=True, on_delete=models.CASCADE)
    price = models.FloatField()
    ribbon_band = models.CharField(max_length=200, null=True, blank=True)
    flowers = models.CharField(max_length=200,null=True, blank=True)
    exterior_band = models.CharField(max_length=200, null=True, blank=True)
    diamondFlowers = models.BooleanField(default=False)
    category = models.ForeignKey(Category, null=True, blank=True, on_delete=models.CASCADE)
    image = models.ImageField(null=True, blank=True)

    def __str__(self):
        return self.name

    @property
    def imageURL(self):
        try:
            url = self.image.url
        except:
            url = ''
        return url

class Order(models.Model):
    customer = models.ForeignKey(Customer, on_delete=models.SET_NULL, null=True, blank=True)
    date_ordered = models.DateTimeField(auto_now_add=True)
    complete = models.BooleanField(default=False)
    transaction_id = models.CharField(max_length=100, null=True)

    def __str__(self):
        return str(self.id)

class OrderItem(models.Model):
    product = models.ForeignKey(Product, on_delete=models.SET_NULL, null=True)
    order = models.ForeignKey(Order, on_delete=models.SET_NULL, null=True)
    quantity = models.IntegerField(default=0, null=True, blank=True)
    date_added = models.DateTimeField(auto_now_add=True)


class ShippingAddress(models.Model):
    customer = models.ForeignKey(Customer, on_delete=models.SET_NULL, null=True)
    order = models.ForeignKey(Order, on_delete=models.SET_NULL, null=True)
    address = models.CharField(max_length=200, null=False)
    city = models.CharField(max_length=200, null=False)
    state = models.CharField(max_length=200, null=False)
    zipcode = models.CharField(max_length=200, null=False)
    date_added = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return self.address


from django.contrib import admin

from .models import *

admin.site.register(Customer)
admin.site.register(Product)
admin.site.register(Order)
admin.site.register(OrderItem)
admin.site.register(ShippingAddress)
admin.site.register(Category)
admin.site.register(Size)

def store(request):
    categorys = Category.objects.all()

    context = {
        'categorys': categorys,
    }
    return render(request, 'store/store.html', context)
    {% for category in categorys %}
        <h1>{{ category.nameOfCategory }}</h1>
        {% for product in category.product_set.all %}
            {{ product.name }}
            {{ product.price }}
            {{ product.size.size }}
        {% endfor %}
    {% endfor %}