Siner
Siner

Reputation: 531

How to change date_joined & datetimefield format in Django?

I use basic User model for date_joined field.

And I already did almost of ways in google search.

views.py

def list(self, request, *args, **kwargs):
    form = ModelInfoForm(request.GET or None)
    serializer = UserSerializer(self.queryset, many=True)

    return Response({'users':serializer.data, 'form':form}, template_name = 'user/userinfo.html')

serializers.py

class UserSerializer(serializers.ModelSerializer):

    class Meta:
        model = User
        fields = ('username', 'email', 'first_name', 'last_name', 'is_superuser', 'is_staff', 'is_active', 'date_joined',
                  'get_absolute_url')

settings.py

USE_L10N = False

USE_TZ = False

DATETIME_FORMAT = '%d-%m-%Y-%H-%M-%S'

template.html

<td>{{ user.date_joined }}</td> 

<td>{{ user.date_joined|date:"d:m:Y H:i:s" }}</td>

And I got results like this

{{ user.date_joined }} 

=> 2018-06-14T12:02:21

{{ user.date_joined|date:"d:m:Y H:i:s" }} 

=> (nothing)

{{ user.date_joined|date:"DATETIME_FORMAT" }}

=> (nothing)

{{ user.date_joined|date:DATETIME_FORMAT }}

=> (error)

I also use user solution to other my models.

models.py

class TimeStampedModel(models.Model):
    created = models.DateTimeField(auto_now_add=True)
    updated = models.DateTimeField(auto_now=True)

Upvotes: 1

Views: 4637

Answers (2)

Tevin Joseph K O
Tevin Joseph K O

Reputation: 2654

You can specify a format parameter to the joined_date in the output format.

class UserSerializer(serializers.ModelSerializer):
   date_joined = serializers.DateTimeField(format="<Your format>")

class Meta:
    model = User
    fields = ('username', 'email', 'first_name', 'last_name', 'is_superuser', 'is_staff', 'is_active','get_absolute_url')

Upvotes: 1

Siner
Siner

Reputation: 531

I solved with my custom DATETIME_FORMAT

settings.py

DATETIME_FORMAT = '%Y-%m-%d %H:%m'

serializers.py

class UserSerializer(serializers.ModelSerializer):
    date_joined = serializers.DateTimeField(format=base.DATETIME_FORMAT, input_formats=None)

    class Meta:
        model = User
        fields = ('username', 'email', 'first_name', 'last_name', 'is_superuser', 'is_staff', 'is_active', 'date_joined',
                  'get_absolute_url', 'pk')

Upvotes: 2

Related Questions