最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解從Django Rest Framework響應中刪除空字段

 更新時間:2019年01月11日 08:26:33   作者:代碼日志  
這篇文章主要介紹了詳解從Django Rest Framework響應中刪除空字段,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

我使用django-rest-framework開發(fā)了一個API.

我正在使用ModelSerializer返回模型的數(shù)據(jù).

models.py

class MetaTags(models.Model):
 title = models.CharField(_('Title'), max_length=255, blank=True, null=True)
 name = models.CharField(_('Name'), max_length=255, blank=True, null=True)

serializer.py

class MetaTagsSerializer(serializers.ModelSerializer):
 class Meta:
  model = MetaTags

響應

{
 "meta": {
  "title": null,
  "name": "XYZ"
 }
}

理想情況下,在API響應中,不應在響應中發(fā)送任何不存在的值.

當標題為null時,我希望響應為:

{
 "meta": {
  "name": "XYZ"
 }
}

您可以嘗試覆蓋to_native函數(shù):

class MetaTagsSerializer(serializers.ModelSerializer):
 class Meta:
  model = MetaTags

 def to_native(self, obj):
  """
  Serialize objects -> primitives.
  """
  ret = self._dict_class()
  ret.fields = self._dict_class()

  for field_name, field in self.fields.items():
   if field.read_only and obj is None:
    continue
   field.initialize(parent=self, field_name=field_name)
   key = self.get_field_key(field_name)
   value = field.field_to_native(obj, field_name)

   # Continue if value is None so that it does not get serialized.
   if value is None:
    continue

   method = getattr(self, 'transform_%s' % field_name, None)
   if callable(method):
    value = method(obj, value)
   if not getattr(field, 'write_only', False):
    ret[key] = value
   ret.fields[key] = self.augment_field(field, field_name, key, value)

  return ret

我基本上從serializers.BaseSerializer復制了基本的to_native函數(shù),并添加了一個值的檢查.

更新:

至于DRF 3.0,to_native()被重命名為to_representation(),其實現(xiàn)稍有改變.這是DRF 3.0的代碼,它忽略空值和空字符串值:

def to_representation(self, instance):
 """
 Object instance -> Dict of primitive datatypes.
 """
 ret = OrderedDict()
 fields = self._readable_fields

 for field in fields:
  try:
   attribute = field.get_attribute(instance)
  except SkipField:
   continue

  # KEY IS HERE:
  if attribute in [None, '']:
   continue

  # We skip `to_representation` for `None` values so that fields do
  # not have to explicitly deal with that case.
  #
  # For related fields with `use_pk_only_optimization` we need to
  # resolve the pk value.
  check_for_none = attribute.pk if isinstance(attribute, PKOnlyObject) else attribute
  if check_for_none is None:
   ret[field.field_name] = None
  else:
   ret[field.field_name] = field.to_representation(attribute)

 return ret

翻譯自:https://stackoverflow.com/questions/27015931/remove-null-fields-from-django-rest-framework-response

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • python實現(xiàn)中文轉換url編碼的方法

    python實現(xiàn)中文轉換url編碼的方法

    這篇文章主要介紹了python實現(xiàn)中文轉換url編碼的方法,結合實例形式分析了Python針對中文的gbk與utf-8編碼轉換的相關技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2016-06-06
  • python列表詳情

    python列表詳情

    這篇文章主要介紹了python列表詳情,python沒有數(shù)組,而是引入了列表(list),列表可以存儲任何類型的數(shù)據(jù),而且同一個列表中的數(shù)據(jù)類型也可以不同,下面一起來看文章詳細內容吧
    2021-12-12
  • 使用Python繪制可愛的招財貓

    使用Python繪制可愛的招財貓

    招財貓,也被稱為“幸運貓”,是一種象征財富和好運的吉祥物,經(jīng)常出現(xiàn)在亞洲文化的商店、餐廳和家庭中,今天,我將帶你用 Python 和 matplotlib 庫從零開始繪制一只可愛的卡通招財貓,感興趣的小伙伴跟著小編一起來看看吧
    2025-01-01
  • django中靜態(tài)文件配置static的方法

    django中靜態(tài)文件配置static的方法

    我們可以使用Template 設置我們的網(wǎng)頁,同時,一個完美的網(wǎng)頁需要css,js,image 等靜態(tài)文件的支持,這篇文章主要介紹了django中靜態(tài)文件配置static的方法,感興趣的小伙伴們可以參考一下
    2018-05-05
  • 基于OpenCV目標跟蹤實現(xiàn)人員計數(shù)器

    基于OpenCV目標跟蹤實現(xiàn)人員計數(shù)器

    這篇文章主要介紹了如何利用Python OpenCV這兩者來創(chuàng)建更準確的人員計數(shù)器,文中的示例代碼講解詳細,感興趣的小伙伴快來跟隨小編學習一下吧
    2022-03-03
  • python opencv檢測直線 cv2.HoughLinesP的實現(xiàn)

    python opencv檢測直線 cv2.HoughLinesP的實現(xiàn)

    cv2.HoughLines()函數(shù)是在二值圖像中查找直線,本文結合示例詳細的介紹了cv2.HoughLinesP的用法,感興趣的可以了解一下
    2021-06-06
  • Python網(wǎng)絡編程之Python編寫TCP協(xié)議程序的步驟

    Python網(wǎng)絡編程之Python編寫TCP協(xié)議程序的步驟

    這篇文章主要介紹了Python網(wǎng)絡編程編寫TCP協(xié)議程序的開發(fā)步驟,通過實例代碼介紹了TCP客戶端程序開發(fā),案例講解多任務版TCP服務端程序開發(fā),需要的朋友可以參考下
    2022-11-11
  • Python疊加矩形框圖層2種方法及效果

    Python疊加矩形框圖層2種方法及效果

    這篇文章主要介紹了Python疊加矩形框圖層2種方法及效果,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-06-06
  • 基于python介紹pytorch保存和恢復參數(shù)

    基于python介紹pytorch保存和恢復參數(shù)

    這篇文章主要介紹了基于python介紹pytorch保存和恢復參數(shù),為了恢復模型,我們需要用代碼生成框架,然后從磁盤加載參數(shù),下面具體的相關介紹,需要的小伙伴可以參考一下
    2022-03-03
  • Python中dumps與dump及l(fā)oads與load的區(qū)別

    Python中dumps與dump及l(fā)oads與load的區(qū)別

    這篇文章主要介紹了Python中dumps與dump、loads與load的區(qū)別,json模塊提供了一種很簡單的方式來編碼和解碼JSON數(shù)據(jù)。其中兩個主要的函數(shù)是json.dumps()和json.loads(),需要的朋友可以參考下
    2022-04-04

最新評論

泗水县| 莒南县| 历史| 靖西县| 普兰店市| 新宾| 门源| 五峰| 若尔盖县| 六枝特区| 丘北县| 田林县| 延津县| 蕉岭县| 温泉县| 天祝| 麻江县| 长泰县| 逊克县| 青冈县| 高安市| 崇文区| 桃源县| 永年县| 东明县| 都安| 民勤县| 桐乡市| 霸州市| 钟山县| 敖汉旗| 新蔡县| 察隅县| 肥乡县| 当涂县| 塘沽区| 天台县| 上思县| 蒙自县| 固原市| 曲阜市|