Джанго JSON проблема сериализации - PullRequest
0 голосов
/ 25 декабря 2010

У меня проблемы с сериализацией объекта django.Проблема в том, что есть внешние ключи.Я хочу, чтобы сериализация имела данные из ссылочного объекта, а не только индекс.

Например, я бы хотел, чтобы в поле данных спонсора было указано «sponsor.last_name, sponsor.first_name», а не «13».

Как исправить сериализацию?

данные json: {"totalCount": "2", "actions": [{"pk": 1, "model": "app.activity", "fields": {"activity_date": "2010-12-20 "," описание ":" моя деятельность "," спонсор ": 13," местоположение ": 1, ....

код модели:

class Activity(models.Model): 
  activity_date = models.DateField()
  description = models.CharField(max_length=200)
  sponsor = models.ForeignKey(Sponsor)
  location = models.ForeignKey(Location)

class Sponsor(models.Model):
  last_name = models.CharField(max_length=20)
  first_name= models.CharField(max_length=20)
  specialty = models.CharField(max_length=100)

class Location(models.Model):
  location_num = models.IntegerField(primary_key=True)
  location_name = models.CharField(max_length=100)

def activityJSON(request):
    activities = Activity.objects.all()
    total = activities.count()
    activities_json = serializers.serialize("json", activities)
    data = "{\"totalCount\":\"%s\",\"activities\":%s}" % (total, activities_json)
    return HttpResponse(data, mimetype="application/json")

Ответы [ 4 ]

2 голосов
/ 27 марта 2012

Добавьте отношения к сериализатору следующим образом:

activities_json = serializers.serialize("json", activities, relations=('sponsor',))

Тогда все, что вам нужно:

return HttpResponse(activities_json, mimetype="application/json")

Затем убедитесь, что у вас также установлена ​​библиотека django wadofstuff.

Надеюсь, это поможет!

1 голос
/ 27 декабря 2010

Эта небольшая библиотека очень удобна с django: http://code.google.com/p/wadofstuff/wiki/DjangoFullSerializers

Она позволяет больше настроек, чем стандартный кодер.

1 голос
/ 25 декабря 2010

Документы , кажется, объясняют, как именно это сделать. Прочитайте часть о сериализации натуральных ключей.

0 голосов
/ 08 июня 2011

any2any также содержит сериализаторы, позволяющие полностью настроить формат вывода:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...