1

这是我的设置:

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']

我正在尝试发布到用户资源:

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\
4

1 回答 1

0

在 POST 请求中,tastepie 尝试从请求的数据创建新对象,但在配置文件对象的请求数据中,您没有为用户传递参数。UserProfile 模型不允许用户为 null 并且服务器引发异常。

我会给你一些解决方案,因为我不知道你的模型到底是做什么的。

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

  2. 首先创建模型用户,然后创建带有两个帖子的 UserProfile 模型。

  3. 实施自定义方法以在一篇文章中创建用户和用户个人资料。
于 2013-02-20T10:36:48.707 回答