【问题标题】:Enum type django and rest framework枚举类型django和rest框架
【发布时间】:2017-04-30 14:08:47
【问题描述】:

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

  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

有没有办法解决这个问题并让模型保留 enum 字段?

【问题讨论】:

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


【解决方案1】:

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

【讨论】:

【解决方案2】:

我建议这样做:

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

【讨论】:

  • 对不起,这并不能解决问题,它引发了与我使用枚举字段相同的问题。我发现我的问题是关于 core-api github.com/core-api/core-api/issues/47 的错误,你有什么解决方法吗?
  • @ozw1z5rd 好的,调查一下
猜你喜欢
  • 1970-01-01
  • 2018-06-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-04
  • 2014-08-13
  • 2015-08-07
相关资源
最近更新 更多