2012-10-03 101 views
0

我有一个名为Task的模型,它根据用户返回一个日期。它定义了一个方法:通过带参数的方法对Django对象进行排序

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。我是否需要使用某种关闭来完成此操作?不知道该怎么去做。

回答

1

解决这个最简单的方法是在你的拉姆达使用关键字参数:

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

此副本从外部范围到您的拉姆达的局部范围内的用户。

+0

完美!谢谢。 –

相关问题