【问题标题】:Multidimensional array model Django多维数组模型 Django
【发布时间】:2018-04-18 01:43:36
【问题描述】:

TLDR:尝试使用 django rest 发送一个二维数组,但失败了,为什么?

这就是我的情况。我正在创建一个摄取工具来接收由其他人创建的数据。该数据的一部分是二维数组或列表列表,无论您喜欢什么。在这种情况下,像这样的东西是浮动列表的列表 Data = [[1,2,3,4,5,6],[1,2,3,4,5,6]] 我正在尝试使用 Django 休息服务来执行此操作,因为这就是我一直在使用的所有其他我所做的事情。无论如何,这种数据类型以 json 格式与其他数据类型一起提供给我,我也会展示这些数据类型。在这个模型方面,我有一个 dataType 的主要模型,data 将进入它看起来像这样

class dataType(models.Model):
  data = ArrayField(ArrayField(models.FloatField(blank=True, null=True),
                              null=True), null=True)  
  data1 = ArrayField(models.FloatField(blank=True, null=True),
                               null=True)
  ...
  other data

现在data 是我遇到的问题。 data1 只要它只是单维数组(列表)就可以正常工作。当我用这个运行代码时,我得到一个错误,说这个Expected a list of items but got type \\"str\\"."]}',即使我正在向它发送一个列表。由于这个不同的原因,它得到了 400。这是 json 代码的样子。

"dataType": [
  {
    "otherData": stuff                                
    "data": [
      [1, 2, 3, 4, 5, 6],
      [1, 2, 3, 4, 5, 6],
      [1, 2, 3, 4, 5, 6],
      [1, 2, 3, 4, 5, 6],
      [1, 2, 3, 4, 5, 6],
      [1, 2, 3, 4, 5, 6]
    ]
  }
]

正如之前有人问过的那样,不,我不能更改二维数组中的数据,它必须保持不变,如果由我决定,我会更改它。

另一边注,我尝试使用像data1 这样的数组字段和二维数组内容,当我转到 localhost:8000/api/v3/dataType 它给我时,它会在其余部分返回 201 但一个 500 错误并抱怨并说了一些类似于寻找字符串或浮点数但收到列表的内容。

更新:关于最后一点,我发现这确实有效,但它将我的二维数组转换为一个巨大的单个数组,所以这仍然不是我想要的,我需要我的二维数组保持为二维数组。

【问题讨论】:

    标签: python django rest django-rest-framework


    【解决方案1】:

    这是一件非常愚蠢的事情。我有多个摄取器都使用此代码,但似乎多维数组将其抛出一个循环。解决我的问题的是请求调用。我原来是这样的:

    response = requests.post(data_endpoint, data=temp, verify=False)
    

    temp 是 json 格式的数据。解决我的问题的是专门对其进行转储并选择媒体类型。

    headers = {'Content-type': 'application/json'}
    response = requests.post(data_endpoint, data=json.dumps(temp), verify=False, headers=headers)
    

    我再次不确定为什么在这种情况下多维数组会迫使我动手,但这就是解决我的问题的原因

    【讨论】:

      猜你喜欢
      • 2020-08-13
      • 2017-08-10
      • 2023-03-14
      • 1970-01-01
      • 1970-01-01
      • 2015-09-26
      • 1970-01-01
      • 2019-06-14
      • 1970-01-01
      相关资源
      最近更新 更多