Предположим, у меня есть модель Product
в моем проекте:
class Product(models.Model):
price = models.IntegerField()
, и я хочу получить какую-то статистику (скажем, я хочу отслеживать, как цена менялась с течением времени)) для него:
class ProductStatistics(models.Model):
created = models.DateTimeField(auto_add_now=True)
statistics_value = models.IntegerField()
product = models.ForeignKey(Product)
@classmethod
def create_for_product(cls, product_ids):
statistics = []
products = Product.objects.filter(id__in=products_ids)
for product in products:
statistics.append(
product=product
statistics_value=product.price
)
cls.objects.bulk_create(statistics)
@classmethod
def get_latest_by_products_ids(cls, product_ids):
return None
У меня проблема с реализацией метода get_latest_by_products_ids
.Мне нужна только последняя статистика, поэтому я не могу сделать что-то вроде:
@classmethod
def get_latest_by_products_ids(cls, product_ids):
return cls.objects.filter(product__id__in=product_ids)
, потому что это вернет всю статистику, которую я собрал за время.Как я могу ограничить запрос только самым последним для каждого продукта?
EDIT Я использую базу данных PostgreSQL.