如何在django中重置datetimefield



我怀疑在DateTime字段中,我的'course'模型有一个名为' publish_date ';如果课程出版了,那么"当然"。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.publish_date = None

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

最新更新