[XXX] 处的 ManyRelatedManager 对象 JSON 不可序列化
ManyRelatedManager object at [XXX] is not JSON serializable
我有一个简单的模型 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
如果@Brobin 的建议由于某种原因没有帮助...
meeting_team_members = [x.as_dict() for x in ins.meeting_team_members.all()]
class Team(models.Model):
# ... example fields
def as_dict(self):
context = {
'pk': self.id,
'name': self.name,
'description': self.description,
}
if self.image:
context['image'] = get_thumbnail(self.image, '150').url
context['full_image'] = self.image.url
else:
context['no_image'] = _(u'No image) # this is just for localization
return context
编辑
for ins in instances: #populate list
context.append({
'meeting_title': ins.meeting_title,
'meeting_team_members':[x.as_dict() for x in ins.meeting_team_members.all()]
})
我有一个简单的模型 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
如果@Brobin 的建议由于某种原因没有帮助...
meeting_team_members = [x.as_dict() for x in ins.meeting_team_members.all()]
class Team(models.Model):
# ... example fields
def as_dict(self):
context = {
'pk': self.id,
'name': self.name,
'description': self.description,
}
if self.image:
context['image'] = get_thumbnail(self.image, '150').url
context['full_image'] = self.image.url
else:
context['no_image'] = _(u'No image) # this is just for localization
return context
编辑
for ins in instances: #populate list
context.append({
'meeting_title': ins.meeting_title,
'meeting_team_members':[x.as_dict() for x in ins.meeting_team_members.all()]
})