【发布时间】:2013-03-16 11:45:09
【问题描述】:
在查询集中,我想返回一个集合(按 pk)和所有具有 status='ACTIVE' 的 Sales 对象。
我试过了:
Collection.objects.filter(Sales__status="ACTIVE")
但是,如果其中一个 Sales 对象与条件匹配,而不仅仅是状态为“ACTIVE”的对象,我将返回包含所有 Sales 对象的集合对象
所以我有 2 个模型(和一个参考模型)
class Collection(models.Model):
ID = models.AutoField(primary_key=True)
collection_title = models.CharField(max_length=255)
class Sales(models.Model):
ID = models.AutoField(primary_key=True)
sales_title = models.CharField(max_length=255)
class CollectionSales(models.Model):
COLLECTIONSALES_STATUS_LIST = (
('ACTIVE', 'Active'),
('REJECT', 'Reject'),
)
collection = models.ForeignKey('Collection')
sales = models.ForeignKey('Sales')
status = models.CharField(max_length=10, choices=COLLECTIONSALES_STATUS_LIST, default="ACTIVE")
class Meta:
db_table = "myschema_collection_sales"
managed=False
编辑: 我正在尝试将其放入 Rest-Framework 中,以便输出为:
{
"count": 2,
"next": null,
"previous": null,
"results": [
{
"ID": "1",
"collection_title": "My Collection 1",
"Sales": [
{
"ID": 12,
"sales_title": "my sales title 12",
"status": "ACTIVE"
}
]
}
,
{
"ID": "2",
"collection_title": "My Collection 2",
"Sales": [
{
"ID": 4,
"sales_title": "my sales title 4",
"status": "ACTIVE"
},
{
"ID": 5,
"sales_title": "my sales title 5",
"status": "ACTIVE"
}
]
}
]
}
【问题讨论】:
-
我认为您的查询是 Collection.objects.filter(sales__status="ACTIVE")?它自然会返回所有销售活跃的系列。
-
你到底想要什么?有活跃销售的系列? CollectionSales 进行活跃销售?
-
我希望查询返回集合对象以及“ACTIVE”的所有销售
标签: django django-models django-queryset django-rest-framework