2014-12-15 5 views
3

У меня есть модель UserProfile, связанные с пользователя модели через отношения один-к-одному.Проблемы с OneToOne поля в Serializer в Джанго рамках отдыха

UserProfileSerializer определен правильно, и это сериализует Userprofile объект хорошо.

from django.contrib.auth.models import User 

class UserProfile(models.Model): 
    user = models.OneToOneField(User, primary_key=True) 
    country = models.CharField(max_length=255) 

class UserProfileSerializer(serializers.ModelSerializer): 

    class Meta: 
     model = UserProfile 
     fields = ('user','country') 

Но это дает ошибки { 'пользователя': [ 'Это поле обязательно для заполнения']} о передаче данных.

>>> s = UserProfileSerializer(data = {'user':1,'country':'YY'}) 

>>> s.is_valid() 
False 

>>> s.errrors 
{'user':['This field is required']} 
+0

repr (s) возвращает . Я использую DRF 2.4.3. –

ответ

1

Это может быть слишком поздно, чтобы помочь, и я не знаю точно, что вы пытаетесь сделать, но попробуйте установить user поля в сериализаторе использовать PrimaryKeyRelatedField, так что вы можете представлять пользователь с идентификатором или установить поле user равным readonly, если вы хотите обновить только UserProfile. Если вы не хотите использовать первичный ключ, другие поля отношений: here.

Если изменить user поля, чтобы быть PrimaryKeyRelatedField и вы хотите, чтобы данные пользователя, чтобы вернуться, как сейчас, вы можете сделать два UserProfile сериализаторов - один для операций записи, и один для чтения. После create или update вы можете переключиться на считывающий сериализатор, чтобы заполнить ответ.

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