我有这三个模型
class Category(models.Model):
name = models.CharField(max_length=255, blank=True, null=True)
details = models.CharField(max_length=500, blank=True, null=True)
photo= models.ImageField(upload_to = 'image/', default = 'None/no-img.jpg')
create_date = models.DateTimeField(auto_now_add=True, blank=True)
def __str__(self):
return self.name
类别具有的数据
-------
name
-------
1 Clothing
2 Electronics
3 Phones
4 Books
5 Home decors
------------
class Item(models.Model):
item_name = models.CharField(max_length=255, blank=True, null=True)
local_name = models.CharField(max_length=255, blank=True, null=True)
scientific_name = models.CharField(max_length=255, blank=True, null=True)
c_id = models.ForeignKey(Category, related_name='c_id_typtype', on_delete=models.CASCADE)
short_details = models.CharField(max_length=500, blank=True, null=True)
def __str__(self):
return self.name
项目具有数据类型
-------
item_name category(fk)
-------
1. Levies jeans 1(Clothing)
2. UCB T-shirts 1(Clothing)
3. Samsung M10 Phone 3(Phones)
4. ASUS T123 Phone 3(Phones)
...
...
------------
class DisplayCart(models.Model):
item_id = models.ForeignKey(Item, related_name='cart_item',blank=True, null=True, on_delete=models.CASCADE)
category_id = models.ForeignKey(Category, related_name='cart_cat',blank=True, null=True, on_delete=models.CASCADE)
user_id = models.ForeignKey(User, related_name='cart_user_id',blank=True, null=True, on_delete=models.CASCADE)
quantity = models.CharField(max_length=50,blank=True, null=True)
cart_item_updated_date = models.CharField(max_length=50,blank=True, null=True)
updated_date = models.DateTimeField(auto_now=True)
create_date = models.DateTimeField(auto_now_add=True, blank=True)
def __str__(self):
return self.item_id.item_name
显示购物车具有具有以下user_id类型的数据
-----------------------------------
item_id category_id qty user_id
-----------------------------------
1(Levies jeans) 1 2 32
2(Samsung M10) 3 1 32
...
...
----------------------------------
这是我的视图部分
def showcart(request):
categories = Category.objects.all()
items = Item.objects.all()
loginuser = request.user.id
cart_items = DisplayCart.objects.all().filter(user_id=loginuser)
print("C users ...."+ str(cart_items))
context = {"home": "active", "categories":categories, "items":items, "cart_items":cart_items}
return render(request,'cart_checkout/cart.html', context)
我正在尝试根据模板中的类别格式显示购物车(user_id共 32 个(,如下所示
-------------------
Clothing qty
-------------------
Levis Jeans 2
-------------------
Phones qty
-------------------
Samsung m10 1
但它像这样显示(想要删除其他类别(
-------------------
Clothing qty
-------------------
Levis Jeans 2
-------------------
Electronics qty
-------------------
-------------------
Phones qty
-------------------
Samsung m10 1
-------------------
Books qty
-------------------
Home decors qty
-------------------
这是我的购物车模板视图.html
{% for cat in categories %}
<h3>{{cat.name}}</h3>
{% for cartdata in cart_items %}
{% if cat.id == cartdata.categories.id %}
<ul>
<li>{{cartdata.items.item_name}}</li>
<li>{{cartdata.quantity}}</li>
</ul>
...
{% endif %}
{% endfor %}
{% endfor %}
我尝试了很多逻辑并检查了相关问题,但不起作用
您可以筛选类别以仅显示具有显示项的类别。例如:
def showcart(request):
items = Item.objects.all()
loginuser = request.user.id
cart_items = DisplayCart.objects.all().filter(user_id=loginuser)
categories = Category.objects.filter(pk__in=cart_items.values_list('category_id_id', flat=True))