1.首先下载
pip install django
pip install djangorestframework
2.在settings中配置
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'bffile_data.apps.BffileDataConfig',
'rest_framework'
]
3.新建一个serizalizers文件
from rest_framework import serializers
class File_infoSerializers(serializers.ModelSerializer):
file_detail = serializers.SerializerMethodField() #自己定义的方法,里面可以去获取别的外键指向的数据
def get_file_detail(self, obj):
file_version_obj = obj.fvfile_id.filter(is_delete="0").order_by("-file_version").first()
update_time = str(file_version_obj.update_time)[:16]
fversion_id = file_version_obj.fversion_id
handlers_id = file_version_obj.handlers_id.person_id
handlers_name = file_version_obj.handlers_id.person_name
size = file_version_obj.size
file_version = file_version_obj.file_version
file_url = file_version_obj.file_url
return {"fversion_id":fversion_id,"update_time": update_time, "handlers_id": handlers_id, "handlers_name": handlers_name, "size": size,
"file_version": file_version, "file_url": file_url}
class Meta:
model = File_info
fields = ["file_id", "file_name", "type", "file_detail"]
4.在urls中添加
from django.urls import path
from bffile_data.views import *
from rest_framework.routers import SimpleRouter
routers = SimpleRouter()
urlpatterns = [
path(r'datas_manage', File_dates.as_view(),name='file_dates'),
]
urlpatterns += routers.urls
5.在views中添加视图
from rest_framework import mixins, viewsets, status
from bffile_data.serializers import File_infoSerializers
from bffile_data import models
from bfresource_platform import settings as config
from bffile_data import tools as ts
from rest_framework.generics import GenericAPIView
from rest_framework.response import Response
class File_dates(GenericAPIView, mixins.ListModelMixin, mixins.CreateModelMixin, mixins.UpdateModelMixin):
queryset = models.File_info.objects.filter(is_delete='0')
serializer_class = File_infoSerializers
def get(self, request):
results = []
serializer_datas = self.serializer_class(self.filter_queryset(self.get_queryset()), many=True).data
for serializer_data in serializer_datas:
if serializer_data["type"] == "文件夹":
results.append(serializer_data)
serializer_datas.remove(serializer_data)
results.extend(serializer_datas)
result = ts.result_data(status.HTTP_200_OK, results, "查询成功")
return Response(result)