【发布时间】:2017-11-06 03:36:32
【问题描述】:
class Product(models.Model):
name = models.CharField(max_length=256)
class Group(models.Model):
name = models.CharField(max_length=32, unique=False)
products = models.ManyToManyField(Product, blank=True)
group.pk == 1 中的产品:
products = Group.objects.get(pk=1).products.all().values('name')
结果:
<QuerySet [
{"name": "product1"},
{"name": "product2"},
{"name": "product3"},
]
我如何知道每个产品属于哪些组?像这样:
<QuerySet [
{"name": "product1", "groups": [{"pk": 1, "name": "group1"}]},
{"name": "product2", "groups": []"},
{"name": "product3", "groups": [{"pk": 1, "name": "group1"}, {"pk": 2, "name": "group2"}},
]
谢谢!
UPD1.
如果我们有数据:
group1 | product 1
group1 | product 2
group2 | product 2
group2 | product 3
创建表(html)的思路如下:
/group/1:
product 1 | dropdown (group1)
product 2 | dropdown (group1, group2)
/组/2:
product 2 | dropdown (group1, group2)
product 3 | dropdown (group2)
【问题讨论】:
-
Group.objects.get(pk=1).products.all().values() 这个返回什么,能发一下吗?
-
Group.objects.get(pk=1).products.all().values() :
-
所以你在 orm 中得到了组,只需将组放入值中,你就会得到它
-
您可以尝试
map(lambda x: {'name': x.name, 'groups': x.group_set.values('pk', 'name')}, Product.objects.all()),但这会将您返回为列表而不是查询集
标签: django many-to-many django-queryset annotate