枚举类型django和休息框架

时间:2017-04-30 14:08:47

标签: django django-models django-rest-framework django-serializer

我对其余框架和一个枚举字段有问题。我收到这个错误:

  File "/usr/local/lib/python2.7/dist-packages/coreapi/codecs/corejson.py", line 48, in decode_schema_from_corejson
    return schema_cls(title=title, description=description)
TypeError: __init__() takes exactly 2 arguments (1 given)

当模型有此字段时:

class PuddleAtomStatus(ChoiceEnum):
    INVALID = "INVALID"
    OK = "OK"

class PuddleAtom(Model):
    name = models.CharField(max_length=255, primary_key=True)
    ingestion_flow = models.CharField(max_length=256)
    status = EnumChoiceField(enm_class=PuddleAtomStaus) 

时一切都很好
status = models.CharField(max_length=100)

我正在使用Django 1.11和python 2.7

有没有办法解决这个问题并让模型留下枚举字段?

2 个答案:

答案 0 :(得分:0)

在高级别,我可以说这就像DRF一样简单,不知道这个特殊的EnumField是什么。因此,您可能需要编写自己的序列化程序。

答案 1 :(得分:0)

我建议这样做:

class PuddleAtom(Model):
    STATUS_CHOICES = (
                        ('INVALID', 'INVALID'),
                        ('OK', 'OK'),
                     )
    name = models.CharField(max_length=255, primary_key=True)
    ingestion_flow = models.CharField(max_length=256)
    status = models.CharField(max_length=100, choices=STATUS_CHOICES)

我希望这会有所帮助。 这是相应的documentation