私はdjango restフレームワークを使用していますが、私は次のようにシリアル化した特定のユーザーの非常に単純なPostsモデルを持っています。DRF投稿外部キーUserId
Serializers.py
class PostSerializer(serializers.HyperlinkedModelSerializer):
image = serializers.ImageField(max_length=None, use_url=True)
question = serializers.CharField(required=False)
ayes = serializers.CharField(required=False)
nays = serializers.CharField(required=False)
neutrals = serializers.CharField(required=False)
class Meta:
model = Posts
fields = ('user','question', 'image','ayes', 'nays', 'neutrals')
class Posts(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
created = models.DateTimeField(auto_now_add=True)
question = models.TextField(max_length=500, blank=True)
image = models.ImageField('optionalImage', upload_to='images/posts/', default='/images/posts/blank.png')
ayes = models.TextField(max_length=200, default=0)
nays = models.TextField(max_length=200, default=0)
neutrals = models.TextField(max_length=200, default=0)
を次のように私のmodels.pyがあり、私はこれに投稿しようとしたとき、私はuser_idのの、NOT NULL整合性制約エラーを取得保管。したがって、シリアライザにcontext = {'request':request}を追加すると、次のエラーが返されます。
ビュー名「user-detail」を使用してハイパーリンク関係のURLを解決できませんでした。 APIに関連するモデルを含めることができなかったか、このフィールドにlookup_field
属性を正しく設定していない可能性があります。次のように
私のviews.pyは以下のとおりです。 views.py
@permission_classes((IsAuthenticated,))
class PostsView(generics.ListCreateAPIView):
queryset = Posts.objects.all()
serializer_class = PostSerializer
def get(self, request, format=None):
snippets = Posts.objects.filter(pk=request.user.id)
serializer = PostSerializer(snippets, many=True,context={'request': request})
return Response(serializer.data)
def post(self, request, format=None):
posts = PostSerializer(data=request.data,context={'request': request})
if posts.is_valid():
posts.save()
return Response("YOLO", status=status.HTTP_201_CREATED)
else:
return Response(posts.errors, status=status.HTTP_400_BAD_REQUEST)
私は、ユーザーのための私のモデルにデフォルト= 0を設定したときに私の他のすべてのフィールドが正しく掲載されています。すべての投稿に保存する必要がある外部キーユーザーを送信できません。私はここで間違って何をしていますか?正しい方法に従っていますか?
おかげで説明しています!今すぐうまくいく – blaziken105