0

ユーザーに応じて日付を返す Task というモデルがあります。メソッドを定義します。

def date_for_display(self, user):
  # return some date for the task

このメソッドによって返された日付でソートされたタスクのリストを作成したいと考えています。私は次のようなものを試しました:

user = User.objects.get(username="jamie")
sorted(Task.objects.all(), key = lambda task: task.date_for_display(user))

しかし、役に立たない。私は得るNameError: global name 'user' is not defined。これを達成するには、ある種の閉鎖を使用する必要がありますか? どうやってそれを行うのかわかりません。

4

1 に答える 1

1

これを解決する最も簡単な方法は、ラムダでキーワード パラメータを使用することです。

user = User.objects.get(username="jamie")
sorted(Task.objects.all(), key = lambda task, user=user: task.date_for_display(user))

これにより、ユーザーが外側のスコープからラムダのローカル スコープにコピーされます。

于 2012-10-03T16:00:22.663 に答える