国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

django rest framework 數據的查找、過濾、排序的示例

2020-02-15 22:00:38
字體:
來源:轉載
供稿:網友

對于管理系統,常常需要展示列表數據,我們對于列表內的數據常常需要查找、過濾、排序等操作,其中查找等操作大部分是在后臺進行的。django rest framework可以輕松的實現數據的查找、過濾等操作。接下來我們將以實際的例子進行介紹。

示例代碼github地址: https://github.com/jinjidejuren/drf_learn

例如cmdb系統,作為資產管理系統常常需要對數據進行過濾或查找,獲取期望的信息。

實現model

1.在這個示例項目中,需要實現對物理服務器的條件過濾,物理服務器的model列表如下(apps/assets/models.py文件):

class Server(models.Model):  """  物理服務器  """  status_choice = (    ('online', '上線'),    ('offline', '下線'),    ('normal', '正常'),    ('abnormal', '異常')  )  server_name = models.CharField(verbose_name=u'服務器名稱', max_length=128, blank=False, null=False)  server_num = models.CharField(verbose_name=u'服務器編號', max_length=128, blank=True, null=True)  brand = models.CharField(verbose_name=u'品牌', max_length=64, blank=True, null=True)  model = models.CharField(verbose_name=u'型號', max_length=64, blank=True, null=True)  cpus = models.IntegerField(verbose_name=u'cpu核數', default=0)  ram = models.IntegerField(verbose_name=u'內存大小', default=0)  disk = models.IntegerField(verbose_name=u'磁盤大小', default=0)  product_date = models.DateTimeField(verbose_name=u'生產日期', auto_now_add=True)  status = models.CharField(verbose_name=u'狀態', max_length=16, choices=status_choice)  created_time = models.DateTimeField(verbose_name=u'創建時間', auto_now_add=True)  modified_time = models.DateTimeField(verbose_name=u'修改時間', auto_now_add=True)  class Meta:    verbose_name = u'服務器'    verbose_name_plural = verbose_name  def __str__(self):    return self.server_name

實現serializer

接下來需要實現server這個model的序列化類,在apps/assets/serializers.py中編寫:

class ServiceSerializer(serializers.ModelSerializer):  """  服務器序列化  """  class Meta:    model = Server    fields = ('id', 'server_name', 'server_num', 'brand', 'model', 'cpus',         'ram', 'disk', 'product_date', 'status', 'created_time',         'modified_time')

對于fields來說,可以使用 _ all _ 來代表所有的字段,除了model中定義的field外,序列化還可以指定其他的信息,比如嵌套信息或者自定義的信息。具體可以取決于業務邏輯。

實現modelviewset

對于modelviewset,我們可以圍繞它對用戶請求做相應的處理。常見的是對model進行增加、刪除、查找、修改等。在這部分我們需要實現ServerViewSet:

class ServerViewSet(viewsets.ModelViewSet):  """  物理服務器視圖  """  queryset = Server.objects.all().order_by('-created_time')  serializer_class = ServerSerializer  pagination_class = MyFormatResultsSetPagination            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 通河县| 琼海市| 乐山市| 高密市| 宜兰县| 黎平县| 达孜县| 安溪县| 永吉县| 滨州市| 绥江县| 托克逊县| 新干县| 浠水县| 湘潭县| 册亨县| 田林县| 德安县| 天气| 河池市| 乐清市| 巴马| 禹城市| 海南省| 巫山县| 亚东县| 张掖市| 乐陵市| 巩义市| 逊克县| 五常市| 木里| 太谷县| 搜索| 德格县| 宜昌市| 吉木乃县| 保康县| 临清市| 保康县| 眉山市|