如何在 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
,您应该使用 None
,None
相当于 Django/Python 层的 NULL
:
course<strong>.publish_date = None</strong>
我建议不要使用一揽子 try-except 子句。这种机制捕获所有异常,但不仅是数据无效的异常,还包括源代码没有意义的异常(这里就是这种情况)。
我怀疑 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
,您应该使用 None
,None
相当于 Django/Python 层的 NULL
:
course<strong>.publish_date = None</strong>
我建议不要使用一揽子 try-except 子句。这种机制捕获所有异常,但不仅是数据无效的异常,还包括源代码没有意义的异常(这里就是这种情况)。