DRF IntegrityError:NOT NULL制約に失敗しました:user_id

yierstem

ユーザーオブジェクトを次のシリアライザーに渡す方法がわかりません。

class ReviewSerializer(serializers.ModelSerializer):
    user = UserSerializer(read_only=True)

    class Meta:
        model = Review
        fields = ('pk', 'title', 'user', 'movie', 'timestamp', 'review_text',)

私はこのビューセットを持っています:

class ReviewsViewSet(viewsets.ModelViewSet):
    queryset = Review.objects.all()
    serializer_class = ReviewSerializer

そしてこのモデル:

class Review(models.Model):
    title = models.CharField(max_length=255)
    user = models.ForeignKey(User, on_delete=models.CASCADE, related_name='reviews')
    movie = models.ForeignKey(Movie, on_delete=models.CASCADE, related_name='reviews')
    review_text = models.TextField()
    timestamp = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return '{movie} review by {user}'.format(user=self.user, movie=self.movie)

私のJavaScriptリクエストは次のようになります:

return axios({
  method: 'post',
  url: 'http://localhost:8000/api/reviews/',
  data: { // Using data from Vue
    title: this.review_title,
    movie: this.id,
    review_text: this.review_text,
    user: JSON.stringify(this.user)
  },
  headers: {
    'Content-Type': 'application/json',
    Authorization: `JWT ${token}`
  }
})

それは私にこのトレースバックを与えます

ユーザーオブジェクトをリクエストに渡すにはどうすればよいですか?

前もって感謝します。

JPG

シリアライザーread_only=Trueから削除

class ReviewSerializer(serializers.ModelSerializer):
    user = UserSerializer()

    class Meta:
        model = Review
        fields = ('pk', 'title', 'user', 'movie', 'timestamp', 'review_text',)

を設定するread_only=Trueと、DRFは、入力ソースが存在する場合でも、入力ソースから値を取得しません。

ドキュメントから、

読み取り専用フィールドはAPI出力に含まれていますが、作成または更新操作中の入力には含めないでください。シリアライザー入力に誤って含まれている「read_only」フィールドはすべて無視されます。

これを設定Trueすると、表現をシリアル化するときにフィールドが使用されますが、逆シリアル化中にインスタンスを作成または更新するときには使用されません。

デフォルトは False


UPDATE
あなたはオーバーライドする必要がありますcreate()方法ReviewSerializerとしての

class ReviewSerializer(serializers.ModelSerializer):
    user = UserSerializer()

    def create(self, validated_data):
        user_dict = validated_data.pop('user')
        user_obj, created = User.objects.get_or_create(**user_dict)
        return Review.objects.create(user=user_obj, **validated_data)

    class Meta:
        model = Review
        fields = ('pk', 'title', 'user', 'movie', 'timestamp', 'review_text',)



デバッグ目的のみ

class ReviewsViewSet(viewsets.ModelViewSet):
    queryset = Review.objects.all()
    serializer_class = ReviewSerializer

    def create(self, request, *args, **kwargs):
        print(request.data)  # print here <<<<
        return super(ReviewsViewSet, self).create(request, *args, **kwargs)

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

django.db.utils.IntegrityError:NOT NULL制約に失敗しました:users_profile.user_id

分類Dev

django.db.utils.IntegrityError:NOT NULL制約に失敗しました:app.area_id

分類Dev

django.db.utils.IntegrityError:NOT NULL制約に失敗しました:polls_article.reporter_id

分類Dev

/ normalsignup / NOT NULL制約でのIntegrityErrorが失敗しました:polls_user.usertype

分類Dev

/ person / create / UNIQUE制約でのIntegrityErrorが失敗しました:member_person.user_id

分類Dev

Django IntegrityError-NOT NULL制約が失敗しました:portfolio_myportfolio.holder_id

分類Dev

Django IntegrityError-NOT NULL制約が失敗しました:learning_logs_topic.owner_id

分類Dev

Django IntegrityError NOT NULL制約が失敗しました:accounts_solution.puzzle_id

分類Dev

DjangoモデルIntegrityError:NOT NULL制約が失敗しました:

分類Dev

django.db.utils.IntegrityError:UNIQUE制約に失敗しました:auctions_bids.item_id

分類Dev

IntegrityError:UNIQUE制約に失敗しました:usermanager_userprofile.email_address

分類Dev

Createsuperuser django.db.utils.IntegrityError:NOTNULL制約に失敗しました

分類Dev

Djangoスローエラーdjango.db.utils.IntegrityError:UNIQUE制約に失敗しました:mediaSort_userdata.user_id

分類Dev

IntegrityError:列「user_id」のnull値がnull以外の制約に違反しています(Django Rest Framework)

分類Dev

IntegrityError: NOT NULL 制約が失敗した理由は何ですか?

分類Dev

/ notes / add NOT NULL制約でのIntegrityErrorが失敗しました:notes_note.created

分類Dev

sqlalchemy.exc.IntegrityError:(sqlite3.IntegrityError)NOTNULL制約が失敗しました

分類Dev

Django 2.0:sqlite IntegrityError:FOREIGN KEY制約が失敗しました

分類Dev

SQLite IntegrityError:UNIQUE制約が失敗しました:

分類Dev

IntegrityError NOTNULL制約が失敗しました

分類Dev

django.db.utils.IntegrityError:FOREIGNKEY制約が失敗しました

分類Dev

Django IntegrityError; NOTNULL制約が失敗しました

分類Dev

/ posts / 12 / new-comment / NOT NULL制約でのIntegrityErrorが失敗しました:posts_comment.author_id

分類Dev

/ new_topic / NOT NULL制約でのIntegrityErrorが失敗しました:learning_logs_topic.owner_id

分類Dev

django.db.utils.IntegrityError:UNIQUE制約に失敗しました:rango_category__new.slug

分類Dev

sqlite3、IntegrityError:値の挿入時にUNIQUE制約が失敗しました

分類Dev

Django tests.py django.db.utils.IntegrityError:UNIQUE制約に失敗しました:auth_user.username

分類Dev

sqlalchemy.exc.IntegrityError:(sqlite3.IntegrityError)UNIQUE制約に失敗しました:users.login

分類Dev

IntegrityError:UNIQUE制約が失敗しました:djangoテストケースのroomer_room.id

Related 関連記事

  1. 1

    django.db.utils.IntegrityError:NOT NULL制約に失敗しました:users_profile.user_id

  2. 2

    django.db.utils.IntegrityError:NOT NULL制約に失敗しました:app.area_id

  3. 3

    django.db.utils.IntegrityError:NOT NULL制約に失敗しました:polls_article.reporter_id

  4. 4

    / normalsignup / NOT NULL制約でのIntegrityErrorが失敗しました:polls_user.usertype

  5. 5

    / person / create / UNIQUE制約でのIntegrityErrorが失敗しました:member_person.user_id

  6. 6

    Django IntegrityError-NOT NULL制約が失敗しました:portfolio_myportfolio.holder_id

  7. 7

    Django IntegrityError-NOT NULL制約が失敗しました:learning_logs_topic.owner_id

  8. 8

    Django IntegrityError NOT NULL制約が失敗しました:accounts_solution.puzzle_id

  9. 9

    DjangoモデルIntegrityError:NOT NULL制約が失敗しました:

  10. 10

    django.db.utils.IntegrityError:UNIQUE制約に失敗しました:auctions_bids.item_id

  11. 11

    IntegrityError:UNIQUE制約に失敗しました:usermanager_userprofile.email_address

  12. 12

    Createsuperuser django.db.utils.IntegrityError:NOTNULL制約に失敗しました

  13. 13

    Djangoスローエラーdjango.db.utils.IntegrityError:UNIQUE制約に失敗しました:mediaSort_userdata.user_id

  14. 14

    IntegrityError:列「user_id」のnull値がnull以外の制約に違反しています(Django Rest Framework)

  15. 15

    IntegrityError: NOT NULL 制約が失敗した理由は何ですか?

  16. 16

    / notes / add NOT NULL制約でのIntegrityErrorが失敗しました:notes_note.created

  17. 17

    sqlalchemy.exc.IntegrityError:(sqlite3.IntegrityError)NOTNULL制約が失敗しました

  18. 18

    Django 2.0:sqlite IntegrityError:FOREIGN KEY制約が失敗しました

  19. 19

    SQLite IntegrityError:UNIQUE制約が失敗しました:

  20. 20

    IntegrityError NOTNULL制約が失敗しました

  21. 21

    django.db.utils.IntegrityError:FOREIGNKEY制約が失敗しました

  22. 22

    Django IntegrityError; NOTNULL制約が失敗しました

  23. 23

    / posts / 12 / new-comment / NOT NULL制約でのIntegrityErrorが失敗しました:posts_comment.author_id

  24. 24

    / new_topic / NOT NULL制約でのIntegrityErrorが失敗しました:learning_logs_topic.owner_id

  25. 25

    django.db.utils.IntegrityError:UNIQUE制約に失敗しました:rango_category__new.slug

  26. 26

    sqlite3、IntegrityError:値の挿入時にUNIQUE制約が失敗しました

  27. 27

    Django tests.py django.db.utils.IntegrityError:UNIQUE制約に失敗しました:auth_user.username

  28. 28

    sqlalchemy.exc.IntegrityError:(sqlite3.IntegrityError)UNIQUE制約に失敗しました:users.login

  29. 29

    IntegrityError:UNIQUE制約が失敗しました:djangoテストケースのroomer_room.id

ホットタグ

アーカイブ