day75test

topic:

1, view and research tools ListAPIView view class, this class inherits complete automotive resource group search interface Automotive Resources need to have image resources, see the interface image resource values

2, GenericViewSet research tools, complete automotive resource class inherits single investigation, the investigation group, Tenzin, a single change, delete single Interface

urls.py


from . import views
from django.conf.urls import url

urlpatterns = [
    
    url(r'^v2/Cars/$', views.CarViewList.as_view()),

    url(r'^v3/Cars/$', views.CarViewGenericViewSet.as_view({'get': 'list'})),
    url(r'^v3/Cars/(?P<pk>\d+)$', views.CarViewGenericViewSet.as_view(
        {'get': 'retrieve', 'post': 'create', 'put': 'update', 'patch': 'partial_update', 'delete': 'destroy'})),
]

views.py


class CarViewList(ListAPIView):
    serializer_class = serializers.CarModelSrealizer
    queryset = models.Car.objects.filter(is_delete=False).all()
    lookup_url_kwarg = 'pk'

    def get(self, request, *args, **kwargs):
        return self.list(request, *args, **kwargs)


class CarViewGenericViewSet(GenericViewSet, ListModelMixin, RetrieveModelMixin, CreateModelMixin, UpdateModelMixin,
                            DestroyModelMixin):
    serializer_class = serializers.CarModelSrealizer
    queryset = models.Car.objects.filter(is_delete=False).all()
    lookup_url_kwarg = 'pk'

models.py

from django.db import models

# 汽车表、汽车商家表、赞助商表、赞助商详情表
class BaseModel(models.Model):
    is_delete = models.BooleanField(default=False)
    createdTime = models.DateTimeField(auto_now_add=True)
    class Meta:
        abstract = True

class Car(BaseModel):
    name = models.CharField(max_length=64)
    price = models.DecimalField(max_digits=10, decimal_places=2)
    image = models.ImageField(upload_to='img', default='media/img/default.png')
    brand = models.ForeignKey(to='Brand', db_constraint=False, null=True, on_delete=models.SET_NULL, related_name='cars')
    sponsors = models.ManyToManyField(to='Sponsor', db_constraint=False, related_name='cars')

    @property
    def brand_name(self):
        return self.brand.name

    @property
    def sponsor_list(self):
        sponsor_list_temp = []
        for sponsor in self.sponsors.all():
            sponsor_dic = {
                'name': sponsor.name
            }
            try:
                sponsor_dic['phone'] = sponsor.detail.phone
            except:
                sponsor_dic['phone'] = '未知'
            sponsor_list_temp.append(sponsor_dic)
        return sponsor_list_temp

    class Meta:
        verbose_name_plural = '汽车'

    def __str__(self):
        return self.name

class Brand(BaseModel):
    name = models.CharField(max_length=64)

    class Meta:
        verbose_name_plural = '品牌'

    def __str__(self):
        return self.name

class Sponsor(BaseModel):
    name = models.CharField(max_length=64)

    @property
    def phone(self):
        try:
            return self.detail.phone
        except:
            return "无"

    class Meta:
        verbose_name_plural = '赞助商'

    def __str__(self):
        return self.name

class SponsorDetail(BaseModel):
    phone = models.CharField(max_length=11)
    sponsor = models.OneToOneField(to=Sponsor, db_constraint=False, on_delete=models.CASCADE, related_name='detail')

    class Meta:
        verbose_name_plural = '赞助商详情'

    def __str__(self):
        try:  # 连表可能会出现问题,所以要异常处理
            return self.sponsor.name + '的详情'
        except:
            return super().__str__()

topic:

1, view and research tools ListAPIView view class, this class inherits complete automotive resource group search interface Automotive Resources need to have image resources, see the interface image resource values

2, GenericViewSet research tools, complete automotive resource class inherits single investigation, the investigation group, Tenzin, a single change, delete single Interface

urls.py


from . import views
from django.conf.urls import url

urlpatterns = [
    
    url(r'^v2/Cars/$', views.CarViewList.as_view()),

    url(r'^v3/Cars/$', views.CarViewGenericViewSet.as_view({'get': 'list'})),
    url(r'^v3/Cars/(?P<pk>\d+)$', views.CarViewGenericViewSet.as_view(
        {'get': 'retrieve', 'post': 'create', 'put': 'update', 'patch': 'partial_update', 'delete': 'destroy'})),
]

views.py


class CarViewList(ListAPIView):
    serializer_class = serializers.CarModelSrealizer
    queryset = models.Car.objects.filter(is_delete=False).all()
    lookup_url_kwarg = 'pk'

    def get(self, request, *args, **kwargs):
        return self.list(request, *args, **kwargs)


class CarViewGenericViewSet(GenericViewSet, ListModelMixin, RetrieveModelMixin, CreateModelMixin, UpdateModelMixin,
                            DestroyModelMixin):
    serializer_class = serializers.CarModelSrealizer
    queryset = models.Car.objects.filter(is_delete=False).all()
    lookup_url_kwarg = 'pk'

Guess you like

Origin www.cnblogs.com/gfhh/p/12122088.html
75