You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将HTTP状态码枚举用作Django模型字段选项?

直接用Python标准库HTTPStatus作为Django模型字段选项的方案

你可以直接利用Python标准库中的HTTPStatus枚举类替代自定义的Status枚举,无需手动重复定义状态码,具体实现如下:

完整示例代码

from django.db import models
from http import HTTPStatus

class ModelA(models.Model):
    id = models.CharField(max_length=200, primary_key=True)
    # 直接使用HTTPStatus生成的选项列表
    status = models.IntegerField(choices=HTTPStatus.choices, max_length=20, default=HTTPStatus.CREATED)

可选:仅保留常用状态码

如果不需要HTTPStatus中的全部状态码,可以筛选出指定成员生成自定义选项:

from django.db import models
from http import HTTPStatus

# 筛选需要的HTTP状态码,生成符合Django要求的选项格式
COMMON_HTTP_STATUSES = [
    (status.value, status.name) 
    for status in [
        HTTPStatus.OK,
        HTTPStatus.CREATED,
        HTTPStatus.BAD_REQUEST,
        HTTPStatus.REQUEST_TIMEOUT,
        HTTPStatus.INTERNAL_SERVER_ERROR,
        HTTPStatus.SERVICE_UNAVAILABLE
    ]
]

class ModelA(models.Model):
    id = models.CharField(max_length=200, primary_key=True)
    status = models.IntegerField(choices=COMMON_HTTP_STATUSES, max_length=20, default=HTTPStatus.CREATED)

说明:HTTPStatus本身是IntegerEnum的子类,它的choices属性会自动生成(状态码值, 状态码名称)格式的元组列表,完全适配Django IntegerField的choices参数要求。

内容的提问来源于stack exchange,提问作者merhoo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 20:33:21