Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 29, 2015 15:17:40

anton41k
Зарегистрирован: 2013-12-18
Сообщения: 36
Репутация: +  0  -
Профиль   Отправить e-mail  

serializers ForeignKey и ManyToManyField

Припустим есть модель

class Blog(models.Model):
    name = models.CharField(max_length=100)
    tagline = models.TextField()
    def __unicode__(self):
        return self.name
class Author(models.Model):
    name = models.CharField(max_length=50)
    email = models.EmailField()
    def __unicode__(self):
        return self.name
class Entry(models.Model):
    blog = models.ForeignKey(Blog)
    authors = models.ManyToManyField(Author)
После выполнения следующей команды
from django.core import serializers
f = serializers.serialize('json', Entry.objects.all())
получается
[{"pk": 1, "model": "myapp.entry", "fields": {"blog": 1, "authors": [1]}}]
А как сделать так чтобы в json файл передавались все данные связных полей blog и authors ???

Офлайн

#2 Янв. 29, 2015 16:28:54

inoks
От: Russia
Зарегистрирован: 2012-12-11
Сообщения: 343
Репутация: +  35  -
Профиль   Адрес электронной почты  

serializers ForeignKey и ManyToManyField

Два варианта:

1) https://code.google.com/p/wadofstuff/wiki/DjangoFullSerializers - вроде не работает на Django > 1.6
2) http://www.django-rest-framework.org/

Офлайн

#3 Янв. 30, 2015 10:06:55

anton41k
Зарегистрирован: 2013-12-18
Сообщения: 36
Репутация: +  0  -
Профиль   Отправить e-mail  

serializers ForeignKey и ManyToManyField

Спасибо!!!
Первая ссылка супер!

Отредактировано anton41k (Янв. 30, 2015 10:07:20)

Офлайн

#4 Янв. 30, 2015 17:38:05

anton41k
Зарегистрирован: 2013-12-18
Сообщения: 36
Репутация: +  0  -
Профиль   Отправить e-mail  

serializers ForeignKey и ManyToManyField

Я воспользовался первой ссылкой.
Это я разобрался работает:

data = serializers.serialize('json', Entry.objects.all(), indent = 4, fields = ("blog", "authors"), relations = {"blog": {"fields":("name",)}})
А как быть с таким действием:
data = serializers.serialize('json', Entry.objects.all(), indent = 4, fields = ("blog", "authors"), relations = ({"blog": {"fields":("name",)}}, {"authors": {"fields":("email",)}}))
т.е. мне нужно выбрать несколько полей со связью и еще отобрать у них нужные поля
[{"pk": 1, 
  "model": "myapp.entry",
  "fields": 
       {"blog": 
            {"pk": 1, 
            "model": "myapp.blog",
            "fields":
                     {"name": "text"} 
            },
        "authors": 
            {"pk": 1, 
            "model": "myapp.authors",
            "fields":
                     {"email": "some_email"} ,
           }
    }
}]

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version