【发布时间】:2015-10-27 09:52:49
【问题描述】:
我有一个带有 ManyToManyFields 的简单模型,我正在序列化为 JSON:
models.py:
class Meeting(models.Model):
site = models.ForeignKey(Site)
meeting_title = models.CharField(default='', max_length=128, blank=True, null=True)
meeting_team_members = models.ManyToManyField(Team, blank=False, null=False) # hosts
meeting_visitors = models.ManyToManyField(Visitor, blank=False, null=False) # invited guests
views.py:
instances = Meeting.objects.filter(site=site.id)
for ins in instances: #populate list
context.append({
'meeting_title': ins.meeting_title,
'meeting_team_members':ins.meeting_team_members.all,
'meeting_visitors': ins.meeting_visitors.all,
json_context = json.dumps(context, cls=DjangoJSONEncoder) #dump list as JSON
return HttpResponse(json_context, 'application/javascript')
但是我得到以下类型错误:
TypeError at /dashboard/get_meetings/
<django.db.models.fields.related.create_many_related_manager.<locals>.ManyRelatedManager object at 0x03406730> is not JSON serializable
【问题讨论】:
-
您需要使用某种序列化程序。它无法将
meeting_team_members序列化为 json。您是否考虑过使用django-rest-framework来构建您的 api?它有一些非常好的类来构建序列化程序。 -
@Brobin 是的,但这是一个单一的用例,所以
django-rest-framework似乎有点矫枉过正。有没有其他办法解决这个问题? -
您是否尝试将
ins.meeting_team_members.all更改为ins.meeting_team_members.all()?等等。所以函数被调用了? -
@Brobin 是的,然后错误是
[<Visitor: visitor2>] is not JSON serializable
标签: python json django django-models getjson