2013-05-13 6 views
1

Dans la suite de la question this, pouvez-vous s'il vous plaît donner un exemple d'une entrée json valide pour créer simultanément un nouveau User et un nouveau UserProfile?Comment soumettre des modèles liés en utilisant DjangoRestFramework

Bien que cela crée avec succès un nouvel utilisateur sur utilisateur point final:

{ 
    "username": "newuser", 
    "password": "abc" 
} 

Mais cette ne sur UserProfile point final:

{ 
    "user":{ 
      "username": "newuser2", 
      "password": "abc" 
    } 
    "biography": "1", 
} 

retour:

{ 
    "user": [ 
     "This field cannot be null." 
    ] 
} 
+0

Habituellement, ils prennent une ressource uri pointant vers une autre ressource pour les objets connexes mais je ne peux pas dire avec certitude que DjangoRestFramework le fait puisque je ne l'ai pas utilisé. – Ngenator

Répondre

0

Ce que vous cherchez est lu + écrire support pour les ressources imbriquées qui sera soon be supported, mais ce n'est pas encore. Toutefois, si vous liez votre modèle de profil utilisateur au modèle utilisateur avec un HyperlinkedRelatedField, vous pouvez d'abord créer un utilisateur, puis créer un profil utilisateur avec l'URI de l'utilisateur créé en tant qu'argument utilisateur. En supposant que vous avez le modèle de profil d'utilisateur suivant et sérialiseur ::

# Model: 
class UserProfile(models.Model): 
country = models.CharField(max_length=127) 
wants_newsletter = models.BooleanField(default=False) 

# Serializer: 
class UserProfile(serializers.ModelSerializer): 
user = serializers.HyperlinkedRelatedField('user-detail') 

class Meta: 
    fields = ('country', 'wants_newsletter') 

... et un objet utilisateur à users/1/, vous pouvez créer un nouveau profil d'utilisateur pour l'utilisateur avec la requête POST suivante au point d'extrémité de profil d'utilisateur ::

{ 
    "country": "Switzerland", 
    "user": "https://stackoverflow.com/users/1/" 
} 

Si c'est trop de demandes pour vous, prenez aa oeil à the docs.

Questions connexes