尝试在DRF上使用DjangoChoices序列化SelectMultipleField

时间:2016-08-09 11:44:40

标签: python django django-rest-framework

我正在使用Django Rest Framework开发一个API Rest,供AngularJS应用程序使用。我有一些属性为SelectMultipleField的模型,但是当我尝试使用我的API通过JSON更新这些字段时,我遇到了问题。

当我从服务器获取数据时,我收到了一个字符串数组,但是当我将更新的数据发送回具有相同格式的服务器时,我收到错误:{{ 1}}。我也尝试将数据解析为用逗号分割的字符串,但它也不起作用......任何关于我做错的想法?​​

型号:

"This isn't a valid option"

串行器:

class Hueco(models.Model):

    class ProteccionType(DjangoChoices):
        Ninguno = ChoiceItem(label=u'Ninguno', value='ninguno')
        Retranqueo = ChoiceItem(label=u'Retranqueo', value='retranqueo')
        Voladizo = ChoiceItem(label=u'Voladizo', value='voladizo')
        Lateral_izquierdo = ChoiceItem(label=u'Lateral Izquierdo', value='lateral_izquierdo')
        Lateral_derecho = ChoiceItem(label=u'Lateral Derecho', value='lateral_derecho')
        Toldo = ChoiceItem(label=u'Toldo', value='toldo')
        Lamas_verticales = ChoiceItem(label=u'Lamas Verticales', value='lamas_verticales')
        Lamas_horizontales = ChoiceItem(label=u'Lamas Horizontales', value='lamas_horizontales')
        Laminas = ChoiceItem(label=u'Láminas', value='laminas')
        Cortinas = ChoiceItem(label=u'Cortinas', value='cortinas')

    tipo_proteccion = SelectMultipleField(
        max_length=150,
        choices=ProteccionType.choices,
        default=ProteccionType.Ninguno
    )

因此,我从服务器获取的JSON示例可能是:

class HuecoSerializer(serializers.ModelSerializer):
    class Meta:
        model = Hueco
        fields = ('id', 'tipo_proteccion' )

如果我尝试用这个更新数据,我会收到错误:

[
    "id": 1,
    "tipo_proteccion": [
      "ninguno"
    ]
]

但如果我这样发送它就可以了。

[
    "id": 1,
    "tipo_proteccion": [
      "cortinas",
      "voladizo"
    ]
]

所以我的问题是如何发送多个选择。我认为这是因为我需要改变我序列化它的方式,但不确定......

0 个答案:

没有答案