123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- # coding=utf-8
- import datetime
- from django.utils import timezone
- from django.conf import settings
- from rest_framework import serializers
- from .models import UsedVehicle, UsedVehicleImg
- class UsedVehicleSerializer(serializers.ModelSerializer):
- status_text = serializers.CharField(source='get_status_display', read_only=True)
- brand_name = serializers.CharField(source='brand.name', read_only=True)
- gearbox_name = serializers.CharField(source='gearbox.name', read_only=True)
- color_name = serializers.CharField(source='color.name', read_only=True)
- displacement_name = serializers.CharField(source='displacement.name', read_only=True)
- emission_name = serializers.CharField(source='emission.name', read_only=True)
- seat_count_name = serializers.CharField(source='seat_count.name', read_only=True)
- oil_type_name = serializers.CharField(source='emission.name', read_only=True)
- plate_date = serializers.DateField(format='%Y-%m-%d')
- factory_date = serializers.DateField(format='%Y-%m-%d')
- thumbnail_url = serializers.SerializerMethodField()
- def get_thumbnail_url(self, obj):
- if obj.thumbnail:
- return '%s%s' % (settings.MEDIA_URL, obj.thumbnail.picture)
- return ''
- class Meta:
- model = UsedVehicle
- fields = '__all__'
- def create(self, validated_data):
- instance = super(UsedVehicleSerializer, self).create(validated_data)
- factory_date = self.context['request'].data.get('factory_date')
- if factory_date:
- years = int((timezone.now() - datetime.datetime.strptime(factory_date, '%Y-%m-%d')).days / 365)
- instance.years = years
- instance.save()
- return instance
- def update(self, instance, validated_data):
- instance = super(UsedVehicleSerializer, self).update(instance, validated_data)
- return instance
- class UsedVehicleImgSerializer(serializers.ModelSerializer):
- img_url = serializers.SerializerMethodField()
- def get_img_url(self, obj):
- if obj.img:
- return '%s%s' % (settings.MEDIA_URL, obj.img.picture)
- return ''
- class Meta:
- model = UsedVehicleImg
- fields = '__all__'
|