2013-05-13 3 views
1

В продолжение вопроса this, можете ли вы привести пример допустимого ввода json для одновременного создания нового User и UserProfile?Как отправить связанные модели с использованием DjangoRestFramework

В то время как это успешно создает нового пользователя на пользователя конечной точки:

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

Но это терпит неудачу на UserProfile конечной точки:

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

Возврат:

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

Обычно они берут ресурс uri, указывающий на другой ресурс для связанных объектов, но я не могу точно сказать, что DjangoRestFramework делает, поскольку я его не использовал. – Ngenator

ответ

0

Что вы ищете, читается + пишите поддержка вложенных ресурсов, которая будет soon be supported, но пока нет.

Однако при связывании модели пользовательского профиля с моделью пользователя с помощью HyperlinkedRelatedField вы можете сначала создать пользователя, а затем создать профиль пользователя с созданным пользовательским URI в качестве пользовательского аргумента. Если у вас есть следующий пользователь модель профиля и сериалайзер ::

# 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') 

... и объект пользователя в users/1/, вы можете создать новый профиль пользователя для данного пользователя с запросом следующей POST к профилю пользователя конечной точке ::

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

Если это слишком много запросов для вас, принять аа взгляд на the docs.

Смежные вопросы