Django Rest框架-无法序列化查询集

2024-03-07

我尝试序列化查询集

def do(self):
        reservations = Reservation.objects.all()
        serializer = ReservationSerializer(data=reservations, many=True)
        if serializer.is_valid():
            encoded_data = json.dumps(serializer.data)
            r = requests.post('http://httpbin.org/post', headers={'Content-Type': 'application/json'}, data=encoded_data)
            print(r.text)
        else:
            print(serializer.errors)

我总是得到错误

{u'non_field_errors':[u'需要一个项目列表,但得到类型“QuerySet”。']}

我尝试使用values()在查询集上,然后转换为列表,但这样我就可以获得没有嵌套模型的对象

model

class Reservation(models.Model):
    start = models.DateField(verbose_name='Заезд', auto_now=False, auto_now_add=False, blank=False)
    end = models.DateField(verbose_name='Выезд', auto_now=False, auto_now_add=False, blank=False)
    check_in_time = models.TimeField(verbose_name='Время заезда', blank=False)
    check_out_time = models.TimeField(verbose_name='Время выезда', blank=False)
    has_refund = models.BooleanField(verbose_name='Возвратная бронь', default=True)
    payed = models.BooleanField(verbose_name='Оплачено', default=False)
    reserved_days = models.ManyToManyField(Day, blank=False)
    additional_services = models.ManyToManyField(AdditionalService)
    guest_name = models.CharField(verbose_name='Имя гостя', max_length=200, blank=True)
    reservation_number = models.CharField(verbose_name='Номер брони', max_length=200, blank=True)

class AdditionalService(models.Model):
    payment_date = models.CharField(verbose_name='Дата оплаты', max_length=200, blank=True)
    payment_type = models.CharField(verbose_name='Форма оплаты', max_length=200, blank=False)
    service = models.CharField(verbose_name='Услуга', max_length=200, blank=False)
    quantity = models.IntegerField(blank=False)
    price = models.FloatField(blank=False)

class Day(models.Model):
    date = models.DateField(auto_now=False, auto_now_add=False)
    price = models.FloatField()
    payment_method = models.CharField(max_length = 200, blank=True)
    payment_date = models.CharField(max_length=200, blank=True)
    room = models.ForeignKey(Room, null=True, blank=True, verbose_name='Номер', on_delete=models.CASCADE)

class Room(models.Model):
    name = models.CharField(max_length = 200, null=True)
    id = models.AutoField(primary_key=True)
    room_id = models.CharField(max_length = 200, null=False)

    def __unicode__(self):
        return self.name

序列化器

class ReservationSerializer(serializers.ModelSerializer):
    reserved_days = DaySerializer(many=True)
    additional_services = AdditionalServicesSerializer(many=True)

    class Meta:
        model = Reservation
        fields = [
            'start',
            'end',
            'check_in_time',
            'check_out_time',
            'reserved_days',
            'additional_services',
            'has_refund',
            'payed',
            'guest_name',
            'reservation_number',
        ]

class DaySerializer(serializers.ModelSerializer):
    room = RoomSerializer()

    class Meta:
        model = Day
        fields = [
            'date',
            'price',
            'payment_method',
            'payment_date',
            'room',
        ]

class AdditionalServicesSerializer(serializers.ModelSerializer):
    class Meta:
        model = AdditionalService
        fields = [
            'payment_date',
            'payment_type',
            'service',
            'quantity',
            'price',
        ]

class RoomSerializer(serializers.ModelSerializer):
    class Meta:
        model = Room
        fields = [
            'room_id',
        ]

For 序列化 http://www.django-rest-framework.org/api-guide/serializers/#serializing-objects你不需要使用data关键字,只需将查询集作为第一个位置参数传递:

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

Django Rest框架-无法序列化查询集 的相关文章

随机推荐

  • Cocos2d-x:可以使用HTML(UIWebView)吗?

    我正在尝试cocos2d x现在我可以为 Android 构建 Javascript 示例并在浏览器中运行它们 现在我想创建自己的游戏 但由于有 HTML 背景 我宁愿使用 HTML 标签和 CSS 也不愿使用 Javascript 来设置
  • PHPExcel 检查工作表是否存在

    我正在使用 phpExcel 但找不到任何内容来检查工作表是否存在 我想要完成的是这样的事情 if excel gt sheetExists 1 excel gt createSheet 1 sheet excel gt setSheet
  • syscall_table 在 x86_64 内核中的什么位置?

    我正在尝试向 Linux 内核 x86 64 添加新的系统调用 基于本文 http techeclipse com how to linux kernel 其中解释了如何将系统调用添加到内核 x86 该文章说我需要在名为的文件中定义我的系统
  • 警告“演示正在进行时!”的含义

    当我整合Instagram在我的项目中 我得到了image from UIImagePickerController之后我想把它发送到Instagram但是当我发送时image to Instagram by UIDocumentInter
  • 将自定义域映射到 openshift wordpress 博客

    我有一个 openshift wordpress 博客 运行在http blog example rhcloud com http blog example rhcloud com 并在我的 DNS 管理中添加 CNAME 记录 如下所示
  • 我如何知道训练数据足以用于机器学习

    例如 如果我想训练一个分类器 也许是SVM 我需要收集多少样本 有没有一个测量方法呢 知道需要收集多少样本并不容易 不过 您可以按照以下步骤操作 解决典型的机器学习问题 构建一个包含几个样本的数据集 a 有多少个 这取决于您遇到的问题类型
  • 在增量搜索 JS 中设置突出显示文本的样式

    第一个 StackOverflow 问题 哇 关于这段 Javascript 样式的简单问题 Search search keydown function e setTimeout function if search val histor
  • JAVA 中的 PIG UDF 错误 1070

    我创造了UDF UPPER jar文件输入 home GED385 pigScripts GED385 snshadoope1 pigScripts jar tf home GED385 pigScripts UDF UPPER jar g
  • 如何使用 intersphinx 正确链接到 PyQt5 文档?

    我在尝试链接到时遇到了一些麻烦PyQt5 文档 http pyqt sourceforge net Docs PyQt5 using intersphinx 尝试交叉引用任何QtCore类 例如QThread 没有像我预期的那样工作 我已经
  • 在 Elasticsearch 中插入多个文档 - 批量文档格式化程序

    太长了 如何批量格式化 JSON 文件以摄取到 Elasticsearch 我正在尝试将一些 NOAA 数据提取到 Elasticsearch 中并一直在利用NOAA Python SDK https github com paulokuo
  • VS 2013可以安装在Server 2003 R2上吗

    我可以在 Windows Server 2003 R2 上安装 Visual Studio 2013 吗 根据 Visual Studio 2013系统要求 http www visualstudio com en us products
  • 我该如何将 HOME 键绑定为 tmux 前缀?

    有没有办法在 tmux conf 中执行此操作 如果其他一切都配置正确 那么应该很简单 只需将其放入您的 tmux conf set option g prefix Home 注意 除非您手动 获取 您的 tmux conf 对文件的更改仅
  • 在 JavaScript 中提升变量

    据我了解 变量提升是在 Java 脚本中完成的 我无法理解为什么它输出为未定义 do something var foo 2 console log foo do something it prints 2 do something con
  • MVC 5 Bootstrap 模式不起作用

    我仍处于 MVC 学习模式 我需要的一件事是删除确认模式 我想使用 Bootstrap 来做到这一点 我四处搜索并想出了一些例子 我已经看过几次了 但我似乎无法让它发挥作用 我确保已下载最新版本的 Bootstap v3 3 5 并将其保存
  • 根据 SDK 级别忽略 Android 单元测试

    是否有注释或其他方便的方法来忽略特定 Android SDK 版本的 junit 测试 有没有类似Lint注解TargetApi x 的东西 或者我是否必须手动检查是否使用 Build VERSION 运行测试 我认为还没有准备好 但为此创
  • 如何使用 DispatchGroup 在 for 循环内进行异步调用

    在下面的示例代码中 我调用complete false 失败时 但是 由于我使用的是DispatchGroup对象来确保所有异步请求都完成 我不能只调用syncGroup leave 失败时 作为notify将被调用 其中包含complet
  • WooCommerce:获取并设置送货和帐单地址的邮政编码

    如何在 woocommerce 中设置 获取邮政编码 Zip code 有这个功能吗 即 我可以通过任何函数设置邮政编码吗 我还想知道 如果用户未登录 如何用我的数据 例如 546621 填充此字段 您可以执行以下操作来获取 设置帐单 运输
  • 带光标的可扩展列表视图

    我想制作一个可扩展的列表视图 但适配器将光标作为输入而不是数组列表 我想在崩溃时实现动画 https github com idunnololz AnimatedExpandableListView https github com idu
  • 是否可以禁用 cdkDrag 子元素上的拖动?

    我正在使用 Angular Material 中的 Angular CDK 拖放 请参阅文档here https material angular io cdk drag drop overview 我想知道是否有可能禁用在子元素上拖动cd
  • Django Rest框架-无法序列化查询集

    我尝试序列化查询集 def do self reservations Reservation objects all serializer ReservationSerializer data reservations many True