如何在 Django 中重置日期时间字段

how to reset datetimefield in django

我怀疑 DateTime 字段,我的 'course' 模型有一个名为“publish_date”的字段,如果课程已发布,则“course.publish_date = datetime.datetime.now ( )”。 还有,发布的课程有可能不会发布,所以我应该可以改成publish_date = null,但是出错了,给个解决方案解决一下。

views.py

class PublishCourseViewSet(ResponseViewMixin, viewsets.GenericViewSet):
    def put(self, request, course_id=None, *args, **kwargs):
        try:
            course = get_object_or_404(Course, pk=course_id)
            course_status = course.review_status
            if course_status == 'review_passed':
                course.review_status = 'published'
                course.publish_date = datetime.datetime.now()
                course.save(update_fields=["review_status", "publish_date"])
                serializer = CourseListSerializer(course)
                return self.jp_response(s_code='HTTP_200_OK', data=serializer.data)
            else:
                return self.jp_error_response('HTTP_400_BAD_REQUEST', {"detail": "course not yet ready for publishing"})
        except Exception as e:
            return self.jp_error_response('HTTP_500_INTERNAL_SERVER_ERROR', 'EXCEPTION', [str(e), ])


class UnPublishCourseViewSet(ResponseViewMixin, viewsets.GenericViewSet):
    def put(self, request, course_id=None, *args, **kwargs):
        try:
            course = get_object_or_404(Course, pk=course_id)
            course_status = course.review_status
            if course_status == 'published':
                course.review_status = 'review_passed'
                course.publish_date = null
                course.save(update_fields=["review_status", "publish_date"])
                serializer = CourseListSerializer(course)
                return self.jp_response(s_code='HTTP_200_OK', data=serializer.data)
            else:
                return self.jp_error_response('HTTP_400_BAD_REQUEST', {"detail": "course not yet ready for publishing"})
        except Exception as e:
            return self.jp_error_response('HTTP_500_INTERNAL_SERVER_ERROR', 'EXCEPTION', [str(e), ])

您不能使用 null,您应该使用 NoneNone 相当于 Django/Python 层的 NULL

course<strong>.publish_date = None</strong>

我建议不要使用一揽子 try-except 子句。这种机制捕获所有异常,但不仅是数据无效的异常,还包括源代码没有意义的异常(这里就是这种情况)。