Django Rest Framework不接受ArrayField POST

时间:2016-08-01 22:36:25

标签: django postgresql django-rest-framework

我的模型中有ArrayField:

class ACI(models.Model):
    node_id = models.ForeignKey(Node)
    timestamp = models.DateTimeField(auto_now_add=True, auto_now=False)
    aci = ArrayField(models.FloatField())

然后在Django Rest Framework中使用此模型的serializers.py

class ACISerializer(serializers.ModelSerializer):
  class Meta:
    fields = (
      'id',
      'node_id',
      'timestamp',
      'aci',
    )
    model = models.ACI

当我手动尝试通过DRF Web界面输入(POST)模型的值时,它会为“aci”字段抛出错误:需要有效数字。 我尝试以各种方式输入'aci'列表,但没有成功:

  1. 22.3,23.4,22.1
  2. [22.3,23.4,22.1]
  3. 22.3,23.4,22.1
  4. 在serializers.py中添加了这一行,但仍然无效:

    aci = serializers.ListField(child=serializers.FloatField())
    

    我无法理解为什么DRF不接受它,它是否只是将它传递给Django本身?!

    用于:

    • Django = 1.8.13
    • Django Rest Framework = 3.4.0
    • PostgreSQL = 9.3.13

    任何建议表示赞赏。 谢谢。

1 个答案:

答案 0 :(得分:0)

我使用Postman遇到了同样的问题,并使用“原始”正文类型而不是表单数据来解决了该问题