DRF 在序列化器檢查字段是否有效

DRF 在序列化器檢查字段是否有效

我所知道的幾種方法:

  1. 在模型類中的 clean() 檢查,最嚴(yán)格,確保數(shù)據(jù)庫中的字段內(nèi)容一定合法
  2. 在序列化器類中校驗(yàn)
  3. 在序列化器中針對(duì)特定的字段校驗(yàn)
  4. 在view中校驗(yàn)
    這里先寫我試過的方法 2 和方法 3

2. 在序列化器類中校驗(yàn)

class ActionSerializer(serializers.ModelSerializer):
    class Meta:
        model = Action
        fields = (
            'action', 'handler', 'action_at', 'qif', 'comment'
        )

    def validate(self, data):
        """
        validate 方法只有一個(gè)參數(shù) data, 是所有字段的值
        由于 data 包含了所有字段的值,所以可以同時(shí)做多個(gè)條件判斷,這里只做了一個(gè)
        """
        if data['qif'].status != enums.STATUS_ACCEPTED:
            raise serializers.ValidationError(
                "QIF has not been accepted by any handler yet."
            )
        return data

3. 在序列化器類中,針對(duì)字段校驗(yàn)

class ActionSerializer(serializers.ModelSerializer):
    class Meta:
        model = Action
        fields = (
            'action', 'handler', 'action_at', 'qif', 'comment'
        )

     def validate_qif(self, value):
        """
        檢查 qif 對(duì)象的狀態(tài),是否為 “已接受”
        """
        if value.status != enums.STATUS_ACCEPTED:
            raise serializers.ValidationError(
                "QIF has not been accepted by any handler yet."
        )
        return value

Reference

Field-level validation
Object-level validation

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • JAVA序列化機(jī)制的深入研究 對(duì)象序列化的最主要的用處就是在傳遞,和保存對(duì)象(object)的時(shí)候,保證對(duì)象的完整...
    時(shí)待吾閱讀 11,195評(píng)論 0 24
  • 重點(diǎn)內(nèi)容回顧-DRF 文章共: 4391字 4圖預(yù)計(jì)閱讀時(shí)間: 15分鐘 每日分享 Overthinking r...
    小閆同學(xué)啊閱讀 872評(píng)論 0 7
  • Serializers 序列化器允許將諸如查詢集和模型實(shí)例之類的復(fù)雜數(shù)據(jù)轉(zhuǎn)換為原生 Python 數(shù)據(jù)類型,然后可...
    lkning閱讀 1,149評(píng)論 0 1
  • ORA-00001: 違反唯一約束條件 (.) 錯(cuò)誤說明:當(dāng)在唯一索引所對(duì)應(yīng)的列上鍵入重復(fù)值時(shí),會(huì)觸發(fā)此異常。 O...
    我想起個(gè)好名字閱讀 5,974評(píng)論 0 9
  • 隨著生活節(jié)奏加快 我們的內(nèi)心也愈加浮躁 經(jīng)常會(huì)發(fā)一些“無名火” 可人是不會(huì)無緣無故憤怒的 我們之所以跟人生氣 往往...
    wty_1219桐雨閱讀 138評(píng)論 0 2

友情鏈接更多精彩內(nèi)容