【发布时间】:2020-04-01 20:42:41
【问题描述】:
这是我的观点.py
def best_selling_items_view(request):
data = Cart.objects.all()
product_obj = Product.objects.all()
best_selling = []
for item in data:
best_selling.append(item.products.all())
best_selling_unique = best_selling
unique_set = []
for product in best_selling_unique:
for item in product:
unique_set.append(item)
# print(set(unique_set))
unique_of_unique = list(set(unique_set))
print(unique_of_unique)
context={
'object': unique_of_unique,
}
return render(request, 'carts/best-selling.html', context)
当我尝试查询上下文字典时,我在 /best-selling/ 处得到 TypeError,即 Product 对象不可迭代。 这是错误页面中 unique_of_unique dict 的样子
unique_of_unique
[<Product: G-string>,
<Product: Condoms>,
<Product: T-shirt>,
<Product: Sex robot>,
<Product: saleh>,
<Product: zap nacks>]
推车型号:
class Cart(models.Model):
user = models.ForeignKey(User, null=True, blank=True)
products = models.ManyToManyField(Product, blank=True)
subtotal = models.DecimalField(default=0.00, max_digits=100, decimal_places=2)
total = models.DecimalField(default=0.00, max_digits=100, decimal_places=2)
updated = models.DateTimeField(auto_now=True)
timestamp = models.DateTimeField(auto_now_add=True)
objects = CartManager()
def __str__(self):
return str(self.id)
产品型号:
title = models.CharField(max_length=120)
slug = models.SlugField(blank=True, unique=True)
description = models.TextField()
price = models.DecimalField(decimal_places=2, max_digits=20, default=39.99)
image = models.ImageField(upload_to=upload_image_path, null=True, blank=True)
featured = models.BooleanField(default=False)
active = models.BooleanField(default=True)
timestamp = models.DateTimeField(auto_now_add=True)
objects = ProductManager()
【问题讨论】:
-
那不是字典,那是
QuerySet,而individualProducts确实是不可迭代的。 -
你能分享你的
Cart和Product模型吗,太复杂了。 Django 可以帮助你过滤相关的对象。 -
这个集合看起来是可迭代的
-
@Fnechz:请edit你的问题。
-
@WillemVanOnsem 我已经编辑过了。
标签: django python-3.x django-queryset