Django Rest Framework:发布对象时如何将对象与用户关联

Oot*_*oto 2 django django-rest-framework

我是创建 REST API 的新手,所以我可能会误解一些内容。我正在使用 Django Rest Framework 创建 REST API。我正在尝试创建一个对象并从我的移动应用程序发送它。

但是,API 返回 400。我认为它仍然无法将对象与请求用户关联起来,我想知道如何做到这一点。

models.py

class Item(models.Model):
    item_name = models.CharField()
    created_at = models.DateTimeField(auto_now_add=True)
    created_by = models.ForeignKey(CustomUser, on_delete=models.CASCADE)
Run Code Online (Sandbox Code Playgroud)

serializers.py

class ItemSerializer(serializers.ModelSerializer):
    class Meta:
        model = Item
        fields = ('item_name', 'created_by')
Run Code Online (Sandbox Code Playgroud)

views.py

class ListItems(generics.ListCreateAPIView):
    queryset = Item.objects.all()
    serializer_class = ItemSerializer
Run Code Online (Sandbox Code Playgroud)

我想知道的是在发布对象时如何将对象与请求用户关联起来,就像我们所做的那样

if form.is_valid():
    item = form.save(commit=False)
    item.created_by = request.user
    item.save()        
Run Code Online (Sandbox Code Playgroud)

rud*_*dra 6

我认为最简单的方法是这样的:

class ItemSerializer(serializers.ModelSerializer):

 created_by = serializers.HiddenField(
    default=serializers.CurrentUserDefault()
)
Run Code Online (Sandbox Code Playgroud)

可以在这里找到参考