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

詳解從Django Rest Framework響應(yīng)中刪除空字段

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

我使用django-rest-framework開(kāi)發(fā)了一個(gè)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

響應(yīng)

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

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

當(dāng)標(biāo)題為null時(shí),我希望響應(yīng)為:

{
 "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復(fù)制了基本的to_native函數(shù),并添加了一個(gè)值的檢查.

更新:

至于DRF 3.0,to_native()被重命名為to_representation(),其實(shí)現(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

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

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

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

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

    python列表詳情

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

    使用Python繪制可愛(ài)的招財(cái)貓

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

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

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

    基于OpenCV目標(biāo)跟蹤實(shí)現(xiàn)人員計(jì)數(shù)器

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

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

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

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

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

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

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

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

    這篇文章主要介紹了基于python介紹pytorch保存和恢復(fù)參數(shù),為了恢復(fù)模型,我們需要用代碼生成框架,然后從磁盤加載參數(shù),下面具體的相關(guān)介紹,需要的小伙伴可以參考一下
    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模塊提供了一種很簡(jiǎn)單的方式來(lái)編碼和解碼JSON數(shù)據(jù)。其中兩個(gè)主要的函數(shù)是json.dumps()和json.loads(),需要的朋友可以參考下
    2022-04-04

最新評(píng)論

定边县| 永登县| 西安市| 定兴县| 刚察县| 临安市| 紫金县| 伊宁市| 汉川市| 江口县| 灯塔市| 肥城市| 息烽县| 鸡泽县| 江山市| 仙桃市| 吉水县| 阳西县| 荆州市| 高邮市| 紫金县| 庆城县| 乌什县| 镇赉县| 久治县| 从江县| 碌曲县| 甘泉县| 莫力| 黄陵县| 和田县| 全州县| 阳春市| 海门市| 永济市| 禄劝| 军事| 西平县| 霍林郭勒市| 安顺市| 额尔古纳市|