Предположим, что у меня есть следующий класс Джанго:Можно создать Queryset Django для выполнения этого сложного запроса?
class MyModel(models.Model):
a = models.IntegerField()
created_ts = models.DateTimeField(default=datetime.utcnow, editable=False)
def __str__(self):
return "<%s %s>" % (
self.__class__.__name__,
"; ".join(
[
"ID: %s" % self.pk,
"a: %s" % self.a,
"created_ts: %s" % self.created_ts,
]
)
)
Я хотел бы найти экземпляры MyModel
с последним created_ts
для каждого отдельного значения a
. Могу ли я сделать это с помощью одного QuerySet? Если да, то что такое QuerySet? Если нет, то какой самый эффективный способ получить этот результат?
В конце концов, я хочу иметь пары Integer/MyModel-Instance. Ответ должен выглядеть примерно так:
{
1: <MyModel ID: 1; a: 1; created_ts: 2004-11-08 06:01:00>,
5: <MyModel ID: 2; a: 5; created_ts: 2004-11-05 08:01:32>,
3: <MyModel ID: 3; a: 3; created_ts: 2004-11-04 11:01:42>,
0: <MyModel ID: 4; a: 0; created_ts: 2004-11-03 06:12:10>,
}
Какую базу данных вы используете? MySQL не поддерживает отдельные поля (PostgreSQL поддерживает). Как я знаю, не существует «прямого» способа сделать то, что вы хотите, не используя необработанный SQL. – Makc
Backend - это mysql. Да, он не поддерживает «отличную от поля». Каков обходной путь? В случае необходимости я предпочел бы делать несколько запросов вместо написания исходного SQL. –