多维数组模型Django

时间:2018-04-17 13:59:36

标签: python django rest django-rest-framework

TLDR:尝试发送带有django休息的二维数组,但它失败了,为什么?

所以这是我的情况。我正在创建一个摄取工具来接收由其他人创建的数据。这些数据的一部分是二维数组或列表列表,无论您喜欢什么。在这种情况下,像这样的浮动列表列表 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这样的数组字段和2d数组的东西,当我转到localhost:8000 / api / v3 / dataType时,它在剩下的一侧返回201 BUT给了我一个500错误并抱怨,并说了一些寻找字符串或浮点但收到列表的东西。

更新:关于最后一个注意事项,我发现这确实有效,但它将我的2d数组转换为一个巨大的单个数组,所以这仍然不是我想要的,我需要我的2d数组保持为2d数组。 / p>

1 个答案:

答案 0 :(得分: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)

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