回顾 views.py 的最新日期
Recalling the latest date on views.py
我正在尝试从查询集中接收最新日期。
customer = models.ForeignKey(Customer, null=True, on_delete= models.SET_NULL)
product = models.ForeignKey(Product, null=True, on_delete= models.SET_NULL)
date_created = models.DateTimeField(auto_now_add=True, null=True)
status = models.CharField(max_length=200, null=True, choices=STATUS)
note = models.CharField(max_length=1000, null=True)
stock = models.CharField(max_length=200, null=True)
min_stock = models.CharField(max_length=200, null=True)
class Meta:
get_latest_by = 'date_created'
def __str__(self):
return self.product.name
这样我就可以在我的 html 上显示每个客户下订单的最新日期,并在每次下订单时自行更新。
然而,当我尝试这个查询集时,
latest_order = Order.objects.order_by('date_created').last()
我收到的是产品名称而不是 date_created,有没有办法为每个客户接收最新的 date_created?
尝试使用:
from django.db.models import F, Max
latest_order_per_user = Order.objects.annotate(
latest=Max('user__order__date_created')
).filter(date_created=F('latest'))
如果您只想获取日期,可以使用 values 方法:
latest_order_per_user = Order.objects.annotate(
latest=Max('user__order__date_created')
).filter(date_created=F('latest'))
latest_dates = last_order_per_user.values('date_created')
这是工作,如你所见,我在括号内放了一个破折号
latest_order = Order.objects.order_by('-date_created')
我正在尝试从查询集中接收最新日期。
customer = models.ForeignKey(Customer, null=True, on_delete= models.SET_NULL)
product = models.ForeignKey(Product, null=True, on_delete= models.SET_NULL)
date_created = models.DateTimeField(auto_now_add=True, null=True)
status = models.CharField(max_length=200, null=True, choices=STATUS)
note = models.CharField(max_length=1000, null=True)
stock = models.CharField(max_length=200, null=True)
min_stock = models.CharField(max_length=200, null=True)
class Meta:
get_latest_by = 'date_created'
def __str__(self):
return self.product.name
这样我就可以在我的 html 上显示每个客户下订单的最新日期,并在每次下订单时自行更新。
然而,当我尝试这个查询集时,
latest_order = Order.objects.order_by('date_created').last()
我收到的是产品名称而不是 date_created,有没有办法为每个客户接收最新的 date_created?
尝试使用:
from django.db.models import F, Max
latest_order_per_user = Order.objects.annotate(
latest=Max('user__order__date_created')
).filter(date_created=F('latest'))
如果您只想获取日期,可以使用 values 方法:
latest_order_per_user = Order.objects.annotate(
latest=Max('user__order__date_created')
).filter(date_created=F('latest'))
latest_dates = last_order_per_user.values('date_created')
这是工作,如你所见,我在括号内放了一个破折号
latest_order = Order.objects.order_by('-date_created')