Вложенные вкусняшки UserProfileResource и UserResource, нулевое значение в столбце \user_id\ нарушает ограничение ненулевого значения

Это моя установка:

class UserProfile(models.Model):
    user = models.OneToOneField(User, unique=True, related_name="profile")

class UserProfileResource(ModelResource):
    class Meta:
        queryset = UserProfile.objects.all()
        resource_name = 'profile'
        authorization = Authorization()

class UserResource(ModelResource):
    profile = fields.ToOneField(UserProfileResource, attribute='userprofile', related_name='user', full=True, null=True)
    class Meta:
       queryset = User.objects.all()
       resource_name = 'user'
       authorization = Authorization()
       list_allowed_methods = ['get', 'post']

Я пытаюсь выполнить POST для пользовательского ресурса:

curl --dump-header - -H "Content-Type: application/json" -X POST --data '{"username":"tata","password":"poooo","profile":{"home_zipcode": "95124"}}' http://192.168.1.103:8000/api/v1/user/

Но получите следующую ошибку:

"error_message": "null value in column \"user_id\" violates not-null constraint\

person adeleinr    schedule 20.02.2013    source источник


Ответы (1)


По POST-запросу deliciouspie пытается создать новые объекты из запрошенных данных, но в запрошенных данных для объекта профиля вы не передаете параметр для пользователя. Модель UserProfile не допускает null для пользователя, и сервер создает исключение.

Я дам вам несколько решений, потому что я не знаю, что именно делают ваши модели.

  1. class UserProfile(models.Model): user = models.OneToOneField(User, unique=True, null=True, related_name="profile")

  2. Сначала создайте модель User, а затем модель UserProfile с двумя сообщениями.

  3. Реализуйте пользовательский метод для создания пользователя и профиля пользователя в одном сообщении.
person UnLiMiTeD    schedule 20.02.2013