如何在Python数据字典中访问DailyPlannerRequest值?
问题解决思路
核心原因
你报错'datetime.date' object has no attribute 'DailyPlannerRequest'的本质是:当前代码里的request变量是datetime.date类型的对象,不是你预期的字典或自定义请求对象——大概率是循环字典时,你把字典里的日期值赋值给了request变量,覆盖了原本的数据源,导致后续用点语法访问DailyPlannerRequest时出错。
具体修复步骤
确认变量类型与命名
先打印变量的类型和内容,搞清楚你手里的数据源到底是什么:print(type(request)) print(request)另外,避免用
request这种容易和Web框架请求对象重名的变量,建议把待比较的字典命名为planner_dict或其他明确名称,避免变量覆盖。用字典键访问替代点语法
如果你的目标数据存在字典里,必须用字典的键访问方式字典名['键名'],而不是对象的点语法:# 假设待比较的字典是planner_dict if planner_dict['day'] == day and event.daily_planner_request_name == planner_dict['DailyPlannerRequest']: # 执行你的匹配逻辑 pass适配QuerySet与字典值的比较
针对QuerySet和字典值的对比场景,这里给你一个清晰的示例:# 示例:待比较的字典数据 planner_data = { 'day': datetime.date(2024, 5, 20), 'DailyPlannerRequest': '项目评审会' } # 遍历Event模型的QuerySet for event in Event.objects.filter(day=planner_data['day']): # 直接用字典键取值和模型字段比较 if event.daily_planner_request_name == planner_data['DailyPlannerRequest']: print(f"匹配到事件:{event.name}")也可以直接在QuerySet过滤时就结合字典值,减少循环内的判断:
matched_events = Event.objects.filter( day=planner_data['day'], daily_planner_request_name=planner_data['DailyPlannerRequest'] )
内容的提问来源于stack exchange,提问作者Steve Smith
相关产品推荐
相关产品推荐

