【发布时间】:2020-06-17 13:41:11
【问题描述】:
我有一个带有date 字段和以下方法的模型:
class Pm(models.Model):
mydate = models.DateField()
@property
def due_date(self):
today = timezone.localtime(timezone.now()).date()
if self.mydate < today:
return today
else:
return self.mydate
如何根据due_date 函数的返回来订购myModel.objects.all()?
我试过了:
qs = sorted(Pm.objects.all(), key=lambda a: a.due_date(), reverse=True)
但它返回错误:
'datetime.date' object is not callable
更新 根据 Sami 的建议:
@staticmethod
def due_date(obj):
today = timezone.localtime(timezone.now()).date()
if obj.pm_date < today:
return today
else:
return obj.pm_date
qs = sorted(Pm.objects.all(), key=Pm.due_date, reverse=True)
似乎工作,除了它返回一个列表而不是一个查询集。
我应该使用什么方法来获取查询集?
【问题讨论】:
-
好吧,你把它标记为属性,所以不要调用它。
-
您的错误表明您正在尝试“调用”日期。尝试去掉括号,看看是否可行。