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'