第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

djangorest框架序列化器-不返回空列表字段

djangorest框架序列化器-不返回空列表字段

胡說(shuō)叔叔 2023-09-26 16:49:38
我有一個(gè)包含 JsonField 的模型的序列化器。我希望始終返回特定字段,即使在 jsonField 中找不到它們。當(dāng)調(diào)用“get”時(shí),它確實(shí)返回序列化器中的所有字段,但是當(dāng)調(diào)用“update”時(shí),它返回帶有更新字段 和 的實(shí)例,allow_null=True因此default=list未更新的字段將不會(huì)在響應(yīng)中返回。問(wèn)題是我如何仍然返回所有序列化器字段作為響應(yīng),包括字段default=list,即使它們沒(méi)有更新并且不存在?這是序列化器 -class ObjectsListSerializer(serializers.Serializer):    days = serializers.IntegerField(allow_null=True, source='objects_list.days')    user_list = serializers.ListField(child=serializers.CharField(), default=list, allow_empty=True, required=False, source='objects_list.user_list')    manager = serializers.CharField(allow_null=True, source='objects_list.manager')    def update(instance, validated_data):                if 'objects_list' in validated_data:        for attr, value in validated_data['objects_list'].items():            instance.objects_list[attr] = value        instance.save()        return instance如前所述,當(dāng)發(fā)送“get”請(qǐng)求時(shí),即使“objects_list”為空,我也會(huì)得到days=Noneuser_list=[]manager=None在回應(yīng)中但是,當(dāng) user_list 不存在并且我正在更新其他字段(例如“天”)時(shí),響應(yīng)中將不存在“user_list”。知道當(dāng)空列表不存在時(shí)如何仍然返回空列表嗎?
查看完整描述

1 回答

?
繁星coding

TA貢獻(xiàn)1797條經(jīng)驗(yàn) 獲得超4個(gè)贊

據(jù)我了解,您正在使用部分更新。對(duì)于部分更新序列化程序,如果無(wú)法檢索該字段,則從響應(yīng)中跳過(guò)該字段。顯然它無(wú)法檢索,因?yàn)?code>objects_list是None,所以objects_list.user_list引發(fā)AttributeError。

因此,為了使其按您希望的方式工作,您應(yīng)該在視圖中手動(dòng)返回完全序列化的數(shù)據(jù):

def partial_update(self, request, pk=None):

? partial_serializer = self.get_serializer(self.get_object(), data=request.data, partial=True)

? partial_serializer.is_valid(raise_exception=True)

? instance = partial_serializer.save()

? # Saved, now return all attributes (not using partial=True here):

? return Response(self.get_serializer(instance).data)


查看完整回答
反對(duì) 回復(fù) 2023-09-26
  • 1 回答
  • 0 關(guān)注
  • 101 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)