【问题标题】:Django choices in Admin when Enum is used使用 Enum 时 Admin 中的 Django 选择
【发布时间】:2019-02-20 21:18:31
【问题描述】:

我有一个使用 Enum 进行选择的模型:

class Agreement(models.Model):
    class Category(enum.Enum):
        EULA = 0
        PROVIDER = 1

    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)
    category = models.IntegerField(
        choices=[(choice.name, choice.value)
                 for choice in Category])
    title = models.CharField(max_length=128)
    content = models.TextField()

我使用简单的管理站点注册来注册它:

admin.site.register(Agreement)

当管理站点呈现对象时它不允许我保存它?有没有人遇到过类似的问题?

【问题讨论】:

    标签: python django django-models django-admin django-orm


    【解决方案1】:

    根据documentation

    每个元组中的第一个元素是要在模型上设置的实际值,第二个元素是人类可读的名称。

    namevalue 应该相反,像这样:

    category = models.IntegerField(
        choices=[(choice.value, choice.name)
                 for choice in Category])
    

    因为category 是一个整数字段,而name 返回一个字符串。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-11-28
      • 1970-01-01
      • 2019-11-02
      • 2021-08-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多