知道我有以下模型:
class Merchant(BaseModel):
business_name = CharField()
user = ForeignKey(
User,
related_name='merchant'
# ...
)
# other fields...
class Sale(BaseModel):
merchant = ForeignKey(
Merchant,
related_name='sale_merchant'
# ...
)
statue = CustomCharField(
max_length=20,
choices=[(DRAFT, DRAFT)), (COMPLETED, COMPLETED), (FAILD, FAILD)],
# ...
)
# other fields like total, discount, data...
class SaleItem(BaseModel):
quantity = PositiveIntegerField()
product = ForeignKey(
Product,
# ...
)
sale = ForeignKey(
Sale,
related_name='sold_item'
# ...
)
# other fields...
以及Product
模型和User
模型(User
模型存储用户的城市作为City
模型的参考)。
正如你所看到的,一个Sale
,可以有多个SaleItem
,一个SaleItem
指的是一个Product
和Sale
本身,并且有一个量。
最后,Sale
代表我们出售给特定商家的一组产品。
我想得到的项目的数量,每种产品被出售给每个商人。我试图实现的输出示例(id
复制第一个SaleItem
的id
,该SaleItem
将产品X
链接到商家Y
):
+--------------------------------------------------------------------+
| id | Merchant Name | Denomination | Quantity | Merchant City |
|-----|----------------|--------------|------------|-----------------|
| 1 | Merchant_1 | Product_1 | 133 | London |
|-----|----------------|--------------|------------|-----------------|
| 2 | Merchant_1 | Product_2 | 1234 | NYC |
|-----|----------------|--------------|------------|-----------------|
| 3 | Merchant_2 | Product_1 | 54 | Tokyo |
+--------------------------------------------------------------------+
Denomination表示产品名称。
我尝试了很多方法,但都无法达到同样的效果。我可以通过多个步骤来完成它,但我需要在一个查询中完成它,无论它有多复杂。
最后,我需要id
来获取出售给商家的每个产品的单个项目的信息,所以如果有更好的方法来实现这一点,我愿意听取建议。谢谢
1条答案
按热度按时间bd1hkmkf1#
我认为下面的方法应该会产生预期的结果
您会注意到,结果将是一个以
"name", "denomination", "quantity", "city_name"
作为键的dict。作为一个侧记,您的
related_name
s应该是复数,因为有一个以上的销售每个商家和一个以上的销售项目每个销售。sales
和sold_items
是合适的。