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

ユーザーリソースに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 リクエストで、tastypie はリクエストされたデータから新しいオブジェクトを作成しようとしますが、プロファイル オブジェクトのリクエストされたデータでは、ユーザーのパラメーターを渡しません。UserProfile モデルはユーザーに null を許可せず、サーバーは例外を発生させます。

あなたのモデルが正確に何をするかわからないので、いくつかの解決策を提供します。

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

  2. 最初にモデル User を作成し、その後 2 つの投稿で UserProfile モデルを作成します。

  3. 1 つの投稿でユーザーとユーザー プロファイルを作成するためのカスタム メソッドを実装します。
于 2013-02-20T10:36:48.707 に答える