Ссылаясь на последнюю дату на views.py - PullRequest
1 голос
/ 02 мая 2020

Я пытаюсь получить самую последнюю дату от Queryset.

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()

Я получаю название продукта, а не дату_создания, есть ли способ получения последней даты_создания в соответствии с клиент

Ответы [ 2 ]

1 голос
/ 02 мая 2020

попробуйте использовать:

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'))

Если вы хотите получить только даты, вы можете использовать значения метод:

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')
0 голосов
/ 02 мая 2020

это работа, как вы видите, я положил да sh в скобку

latest_order = Order.objects.order_by('-date_created')
...