Django Rest Framework 错误:{“user”:[“此字段是必需的。”]

2023-12-20

发布此内容时:

curl -X POST  -H "Authorization: Token sometoken" -d "url=someurl" 127.0.0.1:8000/create/

我收到错误:

{"user":["此字段是必需的。"] 使用 ItemSerializer,

我在 SO 上看到过其他帖子谈论使用 Perform_create,我试图用它来保存用户对象,但由于某种原因它不起作用。当用户定义如下时,Perform_create 起作用:

user = serializers.CharField(
    default=serializers.CurrentUserDefault()
)

但我想使用用户对象,而不仅仅是存储用户名的 CharField

序列化器:

class UserDetailsSerializer(serializers.ModelSerializer):
  class Meta:
    model = UserModel
    fields = ('pk', 'username', 'email', 'first_name', 'last_name')
    read_only_fields = ('email', )


class CategorySerializer(serializers.ModelSerializer):
  class Meta:
    model = Category
    fields = ['cat']

 class CommentSerializer(serializers.HyperlinkedModelSerializer):
      class Meta:
         model = Comment
         fields = [
             'comment',

         ]

class ItemSerializer(serializers.HyperlinkedModelSerializer):
     user = UserDetailsSerializer()
     category = CategorySerializer(many=True)
     thecomments = CommentSerializer(many=True)
     timestamp = serializers.SerializerMethodField('get_mytimestamp')

     def get_mytimestamp(self, obj):
         return time.mktime(datetime.datetime.now().timetuple())

     class Meta:
         model = Item

         fields = [
         "url",
         "user",
         "timestamp",
         "categories",
         "thecomments",
    ]

Model:

class Item(models.Model):
    url = models.CharField(max_length=1000)
    user = models.ForeignKey('auth.User', unique=False)
    timestamp = models.DateTimeField(auto_now_add=True)
    url = models.CharField(max_length=1000)
    categories = models.ManyToManyField(Category)

View:

class ItemCreateAPIView(generics.CreateAPIView):
     serializer_class = ItemSerializer

     def perform_create(self, serializer):
         serializer.save(user=self.request.user)

解决方案:

序列化器创建项目:

class CreateSerializer(serializers.HyperlinkedModelSerializer):
     timestamp = serializers.SerializerMethodField('get_mytimestamp')

     def get_mytimestamp(self, obj):
         return time.mktime(datetime.datetime.now().timetuple())

     class Meta:
         model = Item

         fields = [
         "url",
         "timestamp",
         ]

views.py

class ItemCreateAPIView(generics.CreateAPIView):
     serializer_class = CreateSerializer

     def perform_create(self, serializer):
         serializer.save(user=self.request.user)

post:

curl -X POST  -H "Authorization: Token sometoken" -d "url='someurl'" 127.0.0.1:8000/createitem/

class ItemSerializer(serializers.HyperlinkedModelSerializer):
     user = UserDetailsSerializer()
     category = CategorySerializer(many=True)
     thecomments = CommentSerializer(many=True)
     timestamp = serializers.SerializerMethodField('get_mytimestamp')

     def get_mytimestamp(self, obj):
         return time.mktime(datetime.datetime.now().timetuple())

     class Meta:
         model = Item

         fields = [
         "url",
         "user",
         "timestamp",
         "categories",
         "thecomments",
         ]
        extra_kwargs = {'user': {'required': False}}

add extra_kwargs = {'user': {'required': False}}到你的序列化器元

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Django Rest Framework 错误:{“user”:[“此字段是必需的。”] 的相关文章

  • Django 自定义文件存储系统

    我有一个自定义存储 import os from django core files storage import Storage class AlwaysOverwriteFileSystemStorage Storage def get
  • Python用Django请求Post请求数据

    我正在尝试向一个非常简单的 django 服务器发送一个简单的 post 请求 但无法理解为什么 post 数据没有出现在 requests post 字典中 而是出现在请求正文中 客户端代码 payload test test heade
  • Django 还原不保存在 shell 中所做的修订

    我做了初始安装 https github com etianen django reversion wiki步骤并创建了初始修订版 但是当我在 django shell 中保存模型时 未创建新修订版 In 1 s Shop objects
  • django:如何在模板html页面内进行计算?

    您好 我正在使用缩略图插件来获取图像的宽度和高度 现在我想使用从缩略图插件获取的高度来定义 img 标签的填充 例如 img style padding top img height 2 src 但是我在这里遇到错误 django不允许这样
  • 具有 auto_now_add 的 Django DateTimeField 要求默认值

    我的模型中有这个字段created at models DateTimeField auto now add True 当我尝试进行迁移时出现错误 You are trying to add the field created at wit
  • 预取相关之后选择相关

    我的模型看起来像 class Book models Model publisher models ForeignKey Publisher This is not important class Baz models Model a mo
  • 在django中将子类模型实例转换为另一个子类模型实例?

    我有一个 ModelBase ModelA ModelB 我想将模型实例更改为模型实例 我可以处理他们的属性差异 我看过相关问题 但对我来说不太有用 如何从现有的基本模型实例创建继承的 django 模型实例 https stackover
  • 如何使用 Django 项目设置 SQLite?

    我已阅读 Django 文档 仅供参考 https docs djangoproject com en 1 3 intro tutorial01 https docs djangoproject com en 1 3 intro tutor
  • 如何在 Django Rest Framework 中将当前用户设置为用户字段?

    我有以下代码完美运行 我可以创建一个Post通过选择图像和用户从 DRF 面板中获取对象 但是我希望 DRF 由当前登录的用户填充用户字段 模型 py class Post TimeStamped user models ForeignKe
  • 限制 Django 中的暴力登录攻击 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 是否有普遍接受的策略来保护 Django 应用程序免受此类攻击 有很多可用的库 例如Django 斧头 Django 防御者 Djan
  • 让 Pytest 在 Django cookiecutter / Python 3.x 项目中运行

    我正在建造一个新的cookiecutter django https github com pydanny cookiecutter django项目 这里有本地设置说明 http cookiecutter django readthedo
  • 我应该在哪里对对象和字段进行 django 验证?

    我正在创建一个 Django 应用程序 它使用 Django Rest Framework 和普通的 django views 作为用户的入口点 我想对模型的独立字段以及整个对象进行验证 例如 字段 根据正则表达式函数输入的车牌是否正确 与
  • Django admin:通过 URL 传递变量

    我想通过 URL 将变量传递到 django admin 中的另一个页面 看起来它不起作用 我想传递变量 name hello 并通过request GET get name 捕获它 但是url变成 e 1 经过之后 如果我使用默认参数 q
  • 以敏捷/BDD 方式在 Django 中使用 Doctests 的示例

    我有兴趣学习如何以更敏捷 BDD 的方式进行文档测试和单元测试 我发现了一些看似合理的教程 但它们只是缩略图 我真正想看到的是一些采用 BDD 风格开发的 Django 项目的源代码 我不清楚的是如何处理请求对象等 我遇到过这样的情况 我已
  • 使用 pip3 安装 mysqlclient 时遇到问题

    我正在尝试使用 Django 设置 python 3 6 环境 安装说明说我应该安装 mysqlclient 才能连接到 mySQL 我明白了 dennis django sudo H pip3 install mysqlclient Co
  • django 中计数器的原子增量

    我正在尝试自动增加 Django 中的一个简单计数器 我的代码如下所示 from models import Counter from django db import transaction transaction commit on s
  • 如何继承并重写 django 模型类来创建 listOfStringsField?

    我想为 django 模型创建一个新类型的字段 它基本上是一个 ListOfStrings 因此 在您的模型代码中 您将具有以下内容 模型 py from django db import models class ListOfString
  • Django 评论和评级系统

    我正在寻找一个可以与我的 Django 网站顺利集成的博客和评论系统 我在网上发现了很多 但有点迷失了 我在这方面没有太多经验 希望大家能给我一些建议 以下是我想要拥有的东西 标签云 文章存档 按月 按年 文章评级 例如带有星星或自定义图标
  • matplotlib matshow 标签

    我一个月前开始使用 matplotlib 所以我仍在学习 我正在尝试用 matshow 制作热图 我的代码如下 data numpy array a reshape 4 4 cax ax matshow data interpolation
  • Django NoReverseMatch

    我有以下设置 landing pages views py urls py In urls py当我尝试访问时 我有以下内容 competition from django conf urls defaults import from dj

随机推荐