serializer work

'''
models.py

from django.db import models
# Create your models here.
class Car(models.Model):
    CAR_COLOR=(
        (0,'银色'),
        (1,'黑色'),
        (2,'红色'),
        (3,'灰色'),
    )
    name=models.CharField(max_length=64,verbose_name='车名',unique=True)
    color=models.IntegerField(choices=CAR_COLOR,default=0,verbose_name='颜色')
    price=models.DecimalField(max_digits=5,decimal_places=2,verbose_name='价格')
    img=models.ImageField(upload_to='img',default='img/111.jpg',verbose_name='图片')
    brand=models.CharField(max_length=64,verbose_name='品牌')

    @property
    def color_type(self):
        return self.get_color_display()
    @property
    def icon(self):
        from django.conf import settings

        return '%s%s%s' %(settings.BASE_URL,settings.MEDIA_URL,self.img)
    class Meta:
        db_table='kind_car'
        verbose_name_plural='汽车表'
    def __str__(self):
        return self.name

'''
'''
serializer.py

from rest_framework import serializers
from django.conf import settings
from api import models

class CarModelSerializer(serializers.ModelSerializer):
    re_brand = serializers.CharField(min_length=3, max_length=16, write_only=True)

    class Meta:
        model=models.Car
        fields = ('name','color_type','price','icon','brand','re_brand','color','img')
        extra_kwargs={
            'name':{
                'min_length': 3,
                'max_length': 10,
                'error_messages': {
                    'min_length': '太短',
                    'max_length': '太长'
                }
            },
            'color_type':{
                'read_only': True,
            },
            'price':{

            },
            'icon':{
                'read_only': True,
            },
            'brand':{

            },

        }



'''
'''
views.py

from django.shortcuts import render

# Create your views here.
from rest_framework.response import Response
from rest_framework.views import APIView
from api import models
from api import serializers
from django.conf import settings
class CarsV3APIView(APIView):


    def get(self,request,*args,**kwargs):
        pk=kwargs.get('pk')
        if pk:
            car_obj=models.Car.objects.filter(pk=pk).first()
            if not car_obj:
                return Response({
                    'status':0,
                    'msg':'pk error',
                },status=400)
            car_ser = serializers.CarModelSerializer(car_obj,many=False)
            return Response({
                'status':0,
                'msg':'ok',
                'results':car_ser.data
            })
        else:
            car_query = models.Car.objects.all()
            car_ser=serializers.CarModelSerializer(car_query,many=True)
            return Response({
                'status':0,
                'msg':'ok111',
                'result':car_ser.data
            })

    def post(self,request,*args,**kwargs):
        car_ser=serializers.CarModelSerializer(data=request.data)
        if car_ser.is_valid():
            car_obj=car_ser.save()
            return Response({
                'status':0,
                'msg':'ok',
                'results':serializers.CarModelSerializer(car_obj).data
            })
        else:
            return request({
                'status':1,
                'msg':car_ser.errors,
            })

'''

猜你喜欢

转载自www.cnblogs.com/hj59988326/p/12101930.html