Найти - Пользователи
Полная версия: serializers ForeignKey и ManyToManyField
Начало » Django » serializers ForeignKey и ManyToManyField
1
anton41k
Припустим есть модель
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 ???

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

1) https://code.google.com/p/wadofstuff/wiki/DjangoFullSerializers - вроде не работает на Django > 1.6
2) http://www.django-rest-framework.org/
anton41k
Спасибо!!!
Первая ссылка супер!
anton41k
Я воспользовался первой ссылкой.
Это я разобрался работает:
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"} ,
           }
    }
}]
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB