2016-12-15 54 views
0

我有一个属于不同类别的所有产品的列表。在Django的所有产品中查找不同的类别

model.py

class Product(models.Model): 
     product_name = models.CharField(max_length=50,null=True, blank=True) 
     details = models.CharField(max_length=100, null=True, blank=True) 
     company_name = models.CharField(max_length=50,null=True, blank=True) 
     category = models.ForeignKey(ProductClass,null=True, blank=True) 

类别是ProductClass一个ForeignKey

现在我想要一个所有不同类别的列表。我不想要重复类别的列表。对于我试图obj = CustomerLeads.objects.all()

obj = Product.objects.all() 


    c = [] 
     for i in obj: 
      c.append(i.item_required) 

     cat = set(c) 
     return JsonResponse({'data':cat}) 

我收到错误set([<ProductClass: accessories>, <ProductClass: other>]) is not JSON serializable

我怎样才能得到所有不同类别的清单?

+1

错误是安静清晰,'设置([])'设置ProductClass情况下,这显然是不序列化时,你要发送的他们通过JsonResponse。尝试发送名称,ID和任何你需要的数据类别的字典。 –

+0

你可以帮我一些示例代码 –

+0

什么'CustomerLeads'与什么有关?它不只是'ProductClass.objects.all()'?你在哪里试图获得这份清单? – Sayse

回答

0

distinct()消除queryset 的重复元素。

values_list(* field,flat = True)用于返回值列表。

Product.objects.values_list('category__category_name', flat=True).distinct() 

#output 
[u'Lamps', u'Professional', u'LED', u'Automotive'] 

Reference

相关问题