Эй, я хочу сортировать объекты на основе вычисленного значения в django ... как это сделать?как сортировать по вычисленному значению в django
Вот профиль модели Пример пользователя на основе переполнения стека, что объясняет мое затруднительное положение:
class Profile(models.Model):
user = models.ForeignKey(User)
def get_reputation():
...
return reputation
reputation = property(get_reputation)
Таким образом, сказать, что я хочу, чтобы сортировать пользователей по репутации. Как мне это сделать? Я знаю, что вы не можете просто сделать это:
Profile.objects.order_by("-reputation")
Спасибо за вашу помощь всем :)
+1: просто переопределите save(), чтобы обновить это поле. –
Я решил использовать пост-save сигнал, а не отменять save() ... есть ли какие-либо потенциальные проблемы, о которых я должен знать с этим подходом? – Jiaaro
Если вы хотите использовать сигналы, я бы рекомендовал pre_save, а не post_save. Чтобы сохранить денормализованное поле в актуальном состоянии с помощью post_save, вам нужно выполнить два запроса UPDATE, где их будет достаточно. –