这是我的设置:
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\
答案 0 :(得分:0)
在POST请求上,tastypie尝试从请求的数据创建新对象,但在请求的配置文件对象数据中,您不会为用户传递参数。 UserProfile模型不允许用户为null,服务器引发异常。
我会给你一些解决方案,因为我不知道你的模特到底做了什么。
class UserProfile(models.Model):
user = models.OneToOneField(User, unique=True, null=True, related_name="profile")
首先创建模型用户,然后创建具有两个帖子的UserProfile模型。