【发布时间】:2019-08-26 17:02:26
【问题描述】:
我有以下字典:
<type 'dict'>: {u'user2': {'username': u'user2', 'problems_attempts_last_week': None, 'videos_last_week': None, 'correct_problems_last_week': None, 'videos_overall': None, 'problems_overall': None, 'problems_attempts_overall': None, 'correct_problems_overall': None, 'forum_posts_last_week': 2, 'forum_posts_overall': 13, 'date_last_active': datetime.datetime(2019, 8, 23, 0, 0, tzinfo=<UTC>), 'problems_last_week': None},
u'user3': {'username': u'user3', 'problems_attempts_last_week': None, 'videos_last_week': None, 'correct_problems_last_week': 6, 'videos_overall': None, 'problems_overall': 18, 'problems_attempts_overall': 3, 'correct_problems_overall': 15, 'forum_posts_last_week': None, 'forum_posts_overall': None, 'date_last_active': datetime.datetime(2019, 8, 23, 0, 0, tzinfo=<UTC>), 'problems_last_week': 6},
u'user1': {'username': u'user1', 'problems_attempts_last_week': 4, 'videos_last_week': 1, 'correct_problems_last_week': None, 'videos_overall': 3, 'problems_overall': 8, 'problems_attempts_overall': 4, 'correct_problems_overall': 4, 'forum_posts_last_week': 2, 'forum_posts_overall': 2, 'date_last_active': datetime.datetime(2019, 8, 23, 0, 0, tzinfo=<UTC>), 'problems_last_week': 4}}
还有下面的序列化器:
class UserEngagementSerializer(serializers.Serializer):
"""
Serializes row data
"""
username = serializers.CharField()
videos_overall = serializers.IntegerField()
videos_last_week = serializers.IntegerField()
problems_overall = serializers.IntegerField()
problems_last_week = serializers.IntegerField()
correct_problems_overall = serializers.IntegerField()
correct_problems_last_week = serializers.IntegerField()
problems_attempts_overall = serializers.IntegerField()
problems_attempts_last_week = serializers.IntegerField()
forum_posts_overall = serializers.IntegerField()
forum_posts_last_week = serializers.IntegerField()
date_last_active = serializers.DateTimeField(format=settings.DATE_FORMAT)
当我尝试从我的 REST 服务返回结果时,显示以下错误:
AttributeError:尝试获取值时出现 AttributeError 序列化程序
UserEngagementSerializer上的字段username。这 序列化器字段可能命名不正确并且不匹配任何unicode实例上的属性或键。原始异常文本 是:“unicode”对象没有属性“用户名”。
当我返回一个直接的 Django 查询集时,这个序列化程序起作用了。如何使它与字典一起使用?
【问题讨论】:
标签: python django django-rest-framework django-serializer