mes*_*sjk 3 python django django-models
我有这两个模型:
class Product(models.Model):
name = models.CharField(max_length=100)
...
class ProductPack(models.Model):
product = models.ForeignKey(Product, on_delete=models.CASCADE)
...
price = models.PositiveIntegerField(default=0)
Run Code Online (Sandbox Code Playgroud)
我有一个产品模型的查询集:
products = Product.objects.all()
# <ProductQuerySet [<Product: first product>]>
Run Code Online (Sandbox Code Playgroud)
我想通过“productpack__price”订购产品查询集。所以我尝试通过这段代码来做到这一点:
qs = products.order_by("productpack__price")
Run Code Online (Sandbox Code Playgroud)
这部分正确。但有一个问题。对于产品中的每个对象,此代码将对象返回到它们在 ProductPack 中具有的外键计数。像这样:
qs
<ProductQuerySet [<Product: first product>, <Product: first product>, <Product: first product>]>
Run Code Online (Sandbox Code Playgroud)
如何解决这个问题。你有什么建议吗?
当你order by时productpacks,如果aproduct与multiple相关,则在foreachproductpacks中返回一次。querysetproductpack
这可以是您的解决方案:
from django.db.models import Max
products = Product.objects.annotate(
price=Max("productpack__price")
).order_by("price")
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
659 次 |
| 最近记录: |