0
我正在使用Django的rest框架,我有一個非常簡單的模型的帖子爲特定的用戶,我已經按以下方式序列化。DRF發佈外鍵用戶Id
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')
我的models.py如下
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)
當我試圖張貼到這一點,我一直得到的user_id NOT NULL完整性約束錯誤。因此,我添加了上下文= {'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