クエリセットで、コレクション(pkによる)とstatus='ACTIVE'を持つすべてのSalesオブジェクトを返します。
私が試してみました:
Collection.objects.filter(Sales__status="ACTIVE")
ただし、ステータスが「ACTIVE」のオブジェクトだけでなく、Salesオブジェクトの1つが条件に一致する場合は、すべての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"
}
]
}
]
}