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

如何在Django中重置DateTimeField并解决publish_date设为null报错问题

问题解决方案

1. 修正Python语法错误

你在UnPublishCourseViewSet中直接使用了null赋值,Python中没有null关键字,空值标识为None,首先修改该行代码:

# 错误写法
course.publish_date = null
# 修正为
course.publish_date = None

2. 确认模型字段允许为空

检查你的Course模型中publish_date字段是否配置了null=True,该参数控制数据库层面是否允许该字段存储NULL值,正确配置参考:

from django.db import models

class Course(models.Model):
    # 其他字段省略
    publish_date = models.DateTimeField(verbose_name="发布时间", null=True, blank=True)

如果之前未配置null=True,修改模型后需要执行迁移操作同步数据库:

python manage.py makemigrations
python manage.py migrate

生成迁移文件时如果提示需要为现有记录设置默认值,直接输入None即可。

3. 确认序列化器允许空值

检查你使用的CourseListSerializer中publish_date字段是否配置了allow_null=True,避免序列化返回数据时报错,配置参考:

from rest_framework import serializers

class CourseListSerializer(serializers.ModelSerializer):
    # 其他字段省略
    publish_date = serializers.DateTimeField(allow_null=True, required=False)
    
    class Meta:
        model = Course
        fields = "__all__"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 18:54:03