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

如何在Django Rest Framework中添加整数数组字段?

在Django模型中添加整数数组字段的解决方案

问题根源

你之前用CharField配合序列化器ListField的方案无法正常工作,核心原因是:CharField仅支持存储字符串类型,无法直接与整数列表互相转换——存数据时会因类型不匹配报错,取数据时也无法自动将字符串解析为整数列表,需要额外手动处理,极易引发格式错误。

以下是两种可靠的解决方案:


方案1:使用PostgreSQL专属的ArrayField(推荐)

如果你的项目使用PostgreSQL数据库,Django提供了原生的ArrayField,可直接存储整数数组,无需额外转换。

模型代码

from django.db import models
from django.contrib.postgres.fields import ArrayField

class Schedule(models.Model):
    name = models.CharField(max_length=100)
    start_time = models.DateTimeField(auto_now_add=True)
    end_time = models.DateTimeField(null=True, blank=True)
    # 存储整数数组,默认值为空列表,也可设置default=[1,3]或null=True
    day_of_the_week = ArrayField(models.IntegerField(), default=list)

序列化器代码

无需额外配置,直接使用ModelSerializer即可自动处理数组的序列化与反序列化:

class ScheduleSerializer(serializers.ModelSerializer):
    class Meta:
        model = Schedule
        fields = "__all__"

方案2:使用JSONField(兼容所有数据库)

如果你的项目使用MySQL、SQLite等非PostgreSQL数据库,可使用JSONField存储整数数组——JSON原生支持数组类型,能完美适配需求。

模型代码

from django.db import models

class Schedule(models.Model):
    name = models.CharField(max_length=100)
    start_time = models.DateTimeField(auto_now_add=True)
    end_time = models.DateTimeField(null=True, blank=True)
    # 存储JSON格式的整数数组,默认值为空列表
    day_of_the_week = models.JSONField(default=list)

序列化器代码

同样无需额外配置,直接使用ModelSerializer:

class ScheduleSerializer(serializers.ModelSerializer):
    class Meta:
        model = Schedule
        fields = "__all__"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 08:15:32