0

我对下一个模型有疑问:

class Product(models.Model):
    id_product  = models.AutoField(primary_key=True)
    title       = models.CharField()

    def __unicode__(self):
        return self.title

class Orders(models.Model):
    id_order    = models.AutoField(primary_key=True)
    product     = models.ForeignKey(Product)
    description     = models.CharField(max_length=150, null=True, blank=True)
    date        = models.DateTimeField()

    def __unicode__(self):
        return self.description

如何列出所有产品和每个产品的最后订单?

谢谢。

4

3 回答 3

1

你可以这样做

>>> for product in Product.objects.all():
        print product, product.orders_set.latest('date')    

对于每个产品,您可以访问一组订单,作为product.orders_set您可以使用它进行查询的关系经理。

于 2013-06-24T04:36:23.470 回答
0

你应该用单数命名你的类,Order而不是Orders

如果你使用的是 postgresql,你可以这样做:

Orders.objects.order_by('-date').distinct(product)

否则:

[(p,p.orders_set.latest('date')) for p in Product.objects.all()]
于 2013-06-24T04:35:26.753 回答
0

您可以选择所有产品和每个产品的最后一个订单吗?

for i in Products.objects.all():
    i,Orders.objects.filter(product=i).latest('date')
于 2013-06-24T04:38:13.553 回答