# add smart list api

This commit is contained in:
xianfuxing 2018-07-12 17:55:16 +08:00
parent dd946943e4
commit eee95c77bc
5 changed files with 38 additions and 2 deletions

View File

@ -8,7 +8,6 @@ class SmartListSerializer(serializers.ModelSerializer):
model = SmartModule model = SmartModule
fields = [ fields = [
'name', 'name',
'desc'
'device_id', 'device_id',
'chip_id' 'chip_id'
] ]

8
apps/smart/api/urls.py Normal file
View File

@ -0,0 +1,8 @@
from django.urls import path
from .views import SmartListAPIView
app_name = 'smart-api'
urlpatterns = [
path('', SmartListAPIView.as_view(), name='list')
]

29
apps/smart/api/views.py Normal file
View File

@ -0,0 +1,29 @@
from rest_framework.generics import (
ListAPIView,
RetrieveAPIView,
CreateAPIView
)
from rest_framework.permissions import IsAuthenticated
from rest_framework.filters import SearchFilter, OrderingFilter
from django.db.models import Q
from .serializers import SmartListSerializer
from ..models import SmartModule
class SmartListAPIView(ListAPIView):
serializer_class = SmartListSerializer
filter_backends = [SearchFilter, OrderingFilter]
search_fields = ['name', 'device_id', 'chip_id', 'region']
def get_queryset(self, *args, **kwargs):
queryset_list = SmartModule.objects.all()
query = self.request.GET.get('q')
if query:
queryset_list = queryset_list.filter(
Q(name__icontains=query) |
Q(device_id__icontains=query) |
Q(chip_id__contains=query) |
Q(region__icontains=query)
).distinct()
return queryset_list

View File

@ -1,6 +1,5 @@
from django.db import models from django.db import models
from django.contrib.contenttypes.fields import GenericForeignKey from django.contrib.contenttypes.fields import GenericForeignKey
from django.contrib.contenttypes.fields import GenericRelation
from django.contrib.contenttypes.models import ContentType from django.contrib.contenttypes.models import ContentType

View File

@ -19,4 +19,5 @@ from django.urls import path, include
urlpatterns = [ urlpatterns = [
path('mosq_admin/', admin.site.urls), path('mosq_admin/', admin.site.urls),
path('api/mosq/', include('mosquito.api.urls')), path('api/mosq/', include('mosquito.api.urls')),
path('api/smart/', include('smart.api.urls')),
] ]