PostgreSQL在"本地时区"中保存日期,而我用Django将其设置为"UTC"

Akh*_*dra 1 python django postgresql django-models django-rest-framework

我试图以UTC格式保存日期,但它保存在我的localtimezone 状态可以直到Django view但是.save()在数据库中存储为'localtimezone'之后

我的 setting.py

LANGUAGE_CODE = 'en-us'
TIME_ZONE = 'UTC'
USE_TZ = True
Run Code Online (Sandbox Code Playgroud)

model.py

class Career(models.Model):
"""
model for storing all leads from career section of front apps
"""
name = models.CharField(max_length=200)
email = models.CharField(max_length=200)
phone = models.CharField(max_length=20, blank=True, null=True)
status = models.BooleanField(default=1)
created_on = models.DateTimeField(null=True, blank=True)
updated_on = models.DateTimeField(null=True, blank=True)

class Meta:
    db_table = 'career_leads'
Run Code Online (Sandbox Code Playgroud)

我的views档案

class CareerFormApi(APIView):
 def post(self, request):
    career_serializer = CareerPostSerializer(data=request.data)
    career_data = request.data


    if career_serializer.is_valid():
        career_serializer.validated_data['created_on'] = timezone.datetime.now()
        career_serializer.validated_data['updated_on'] = timezone.datetime.now()
        # I am geeting correct time zone here.
         print(timezone.datetime.now()) 


        career_serializer.validated_data['status'] = True

#after save  i check my Database where it saved as my localtime zone

        career_serializer.save() 

        return Response({
            'status': status_code.HTTP_201_CREATED,
            'message': 'Detail has been saved successfully.'
        }, status=status.HTTP_201_CREATED)
    return Response(career_serializer.errors, status=status.HTTP_400_BAD_REQUEST)
Run Code Online (Sandbox Code Playgroud)

PS我改变我的postgres时区,以及在以UTC这样的

set timezone='UTC';
Run Code Online (Sandbox Code Playgroud)

但它没有用.

小智 7

如果要更改Postgresql的时区,请执行以下命令:

ALTER USER User_Name SET TimeZone TO 'utc';

并通过以下方式重新启动postgres服务:

sudo service postgresql restart