Python lambda-can';t将datetime.date与int进行比较
我正在对多个模型中的多个查询集进行排序Python lambda-can';t将datetime.date与int进行比较,python,django,lambda,Python,Django,Lambda,我正在对多个模型中的多个查询集进行排序 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\u date属性为整数,Journal的
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\u date
属性为整数,Journal
的year
属性为datetime字段,paper
的year
属性为整数
我这样做是为了对它们进行分类:
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
问题是我不想把报纸的年格式改成DateTimeField。在这种情况下,如何对它们进行排序 您需要修改
分拣机
功能,并从日期时间
字段中获取:
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
你可以从
发布日期中选择年:x.release\u date.year
@alecxe将x.release\u date.year
然后是整数
?是的,试一试。@alecxe哦,对不起,我写错了描述。图书的发布日期为整数,期刊为日期字段,报纸为整数:(Doiyyor尼斯!只是考虑跟随。你甚至混淆了你自己:)是的,你是对的。错误的名字现在把我搞糊涂了!谢谢兄弟