在查询集列表中更新模型方法

时间:2015-08-17 09:50:33

标签: python django django-models

我有以下模型的分数,而不是从模型方法更新。

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

或者我不必保存值,只需按顺序排序,是否可以按返回的每个实例的函数结果运行函数和顺序?

1 个答案:

答案 0 :(得分:1)

“你可以通过该函数的结果为每个返回的实例运行一个函数和顺序吗?”

是的,你可以:)。

def score_func(model):
    score = do_something_to_get_score(model)
    return score

results = sorted(list_of_models, score_func)