这就是我的模型的样子:
class Store(models.Model):
name = models.CharField(unique=True, max_length=255)
is_valid = models.IntegerField(default=0)
default_link = models.TextField(default="")
store_url = models.TextField(default="")
def __str__(self):
return self.name
class StoreCategory(models.Model):
store = models.ForeignKey(Store)
category = models.CharField(max_length=255, blank=True)
sub_category = models.CharField(max_length=255, blank=True)
我想获取按类别分组的Store对象列表。例如,这是StoreCategory中的数据:
store | category | sub_category
-----------------------------------
ABC | Electronics | Laptops
ABC | Electronics | Mobile Phones
PQR | Food | Food
PQR | Fashion | Men
XYZ | Electronics | Laptops
输出应该是这样的:
{
'Electronics': [ABC, XYZ],
'Fashion' : [PQR],
'Food': [PQR]
}
此处[ABC, XYZ]
是商店对象,而不仅仅是他们的名字。
答案 0 :(得分:0)
根据您提供的内容,我认为您应该使用ManyToManyField
而不是ForeignKey
。话虽如此:
def get_stores_by_cat():
result = {}
for sc in StoreCategory.objects.all():
result[sc] = []
for s in sc.store.all():
result[sc].append(s)
return result
或者更简洁地使用列表理解(在这种情况下,更多的是" dict"理解):
stores_by_cat = { sc: list(sc.store.all()) for sc in StoreCategory.objects.all() }