[英]lambda - can't compare datetime.date to int
我正在从多个模型中排序多个查询集。
bs = Book.objects.filter(person=person).order_by('-release_date')
jn = Journal.objects.filter(person=person).order_by('-year')
np = Newspaper.objects.filter(person=person).order_by('-year')
问题是Book
release_date
-Attribute为Integer, Journal
的year
为DateTimeField, Newspaper
的year
为Integer。
我这样做是为了对它们进行排序:
joined = itertools.chain(bs, jn, np)
sorter = lambda x: x.release_date if hasattr(x,'release_date') else x.year
latest_pubs = sorted(joined, key = sorter, reverse=True)
但它说:
can't compare datetime.date to int
问题是我不想将“报纸”的year
格式更改为DateTimeField。 在这种情况下如何分类?
您需要修改sorter
功能,并从datetime
字段中提取year
:
def sorter(x):
if hasattr(x, 'year'):
if isinstance(x.year, datetime):
return x.year.year
else:
return x.year
else:
return x.release_date
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.