我有以下模型的分数,而不是从模型方法更新。
class Member(models.Model):
score = models.IntegerField(default=0, editable=False)
def update_score(self):
self.score = new_score()
self.save()
接下来,我查询所有成员并按分数排序:
def filter_queryset(self, queryset):
super(MemberListView, self).filter_queryset(queryset) \
.filter() \
.order_by('score')
我的问题是我需要一种方法来更新返回的每个模型的所有分数(update_score
) 我在上面订购它们。我可以用Python做到这一点,但我很害怕这会变得很慢并且是一个坏主意。我有什么选择,如何做到这一点?我正在使用postgis
或者我不必保存值,只需按顺序排序,是否可以按返回的每个实例的函数结果运行函数和顺序?
答案 0 :(得分:1)
“你可以通过该函数的结果为每个返回的实例运行一个函数和顺序吗?”
是的,你可以:)。
def score_func(model):
score = do_something_to_get_score(model)
return score
results = sorted(list_of_models, score_func)