Django 休息框架 : How to associate the object with the user when posting the object

标签 django django-rest-framework

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

但是,API 返回 400。我认为它仍然无法将对象与请求用户相关联,我想知道该怎么做。

模型.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)

serializers.py

class ItemSerializer(serializers.ModelSerializer):
    class Meta:
        model = Item
        fields = ('item_name', 'created_by')

views.py

class ListItems(generics.ListCreateAPIView):
    queryset = Item.objects.all()
    serializer_class = ItemSerializer

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

if form.is_valid():
    item = form.save(commit=False)
    item.created_by = request.user
    item.save()        

最佳答案

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

class ItemSerializer(serializers.ModelSerializer):

 created_by = serializers.HiddenField(
    default=serializers.CurrentUserDefault()
)

可以找到引用here

关于Django 休息框架 : How to associate the object with the user when posting the object,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54921401/

相关文章:

Django 管理员 : override delete method

html - 我无法将我的 css 链接到 html

html - 在html表格中显示自增序列号

python - 网址处的 Django AssertionError

python-3.x - parse() 缺少 1 个必需的位置参数 : 'stream'

javascript - Web 框架为程序员提供什么帮助?

django - 给出初始值会在 django 中引发 'value for field is required' 错误

python - 请求对象中的 Django REST Framework 自定义 header

python - token 认证 Django Rest Framework HTTPie

django - `.create()` 方法默认不支持可写的点源字段。为序列化器编写显式的 `.create()` 方法