2013-05-07 2 views
6

Mam zdefiniowany model profilu użytkownika, ale chcę mieć jeden punkt końcowy API, który zapisuje wszystkie dane użytkownika do obu modeli. Mam tu na myśli, używam modelu obsługi i mam model userprofile zdefiniowane następującoJak serializować do wielu modeli przy użyciu DjangoRestFramework

class UserProfile(models.Model): 
    user = models.OneToOneField(settings.AUTH_USER_MODEL) 
    biography = models.TextField() 

kiedy zdefiniować serializatora do tworzenia nowego użytkownika, jak mogę dostać się do serializacji danych zarówno do użytkowników model i model userProfile?

Odpowiedz

18

Wystarczy zdefiniować serializatora dla każdego, i dołączyć jeden do drugiego, co następuje:

from rest_framework.serializers import ModelSerializer 

class UserSerializer(ModelSerializer): 
    """ 
    A serializer for ``User``. 
    """ 
    class Meta(object): 
     model = User 


class UserProfileSerializer(ModelSerializer): 
    """ 
    A serializer for ``UserProfile``. 
    """ 
    user = UserSerializer() 

    class Meta(object): 
     model = UserProfile 

Można wtedy użyć UserProfileSerializer zaktualizować (lub wykonywać inne działania) profil użytkownika i jego wystąpienie użytkownika.