2013-02-20 104 views
1

這是我的設置:嵌套tastypie 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'] 

我試圖張貼到用戶資源:

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

在POST請求tastypie是嘗試建立由叔新對象他請求了數據,但在所請求的profile對象數據中,您不會爲用戶傳遞參數。 UserProfile模型不允許用戶爲空,並且服務器引發異常。

我會給你幾個解決方案,因爲我不知道你的模型究竟做了什麼。

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

  2. 首先創建模型的用戶,並有兩個職位,用戶配置模式之後。

  3. 實現用於在一個帖子中創建用戶和用戶配置文件的自定義方法。
相關問題