django中序列化器字段参数、关联字段
生活随笔
收集整理的這篇文章主要介紹了
django中序列化器字段参数、关联字段
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一、PrimaryKeyRelatedField
1、可以定義PrimaryKeyRelatedField來獲取關聯表的外鍵值
2、如果通過父表獲取從表數據,默認需要使用從表模型類名小寫_set作為序列化器類中的關聯字段名稱
3、在序列化器類中定義PrimaryKeyRelatedField,當用postman獲取列表數據時,會報錯
4、如果在定義模型類的外鍵字段時,指定了related_name參數,那么會把related_name參數名作為序列化器類中的關鍵字段名稱
?報錯信息說,要么指定read_only=True,或者指定get_queryset
當指定了read_only=True,表示我僅僅只做輸出?????;一定要指定many=True,因為主表獲取從表的數據獲取的是多條數據;
?當我指定了查詢集,表示創建數據的時候給它指定一個queryset,接口id必須在我的這個查詢集中
?例如:當我的接口id在我的查詢集中時:
?serializers1.validated_data輸出校驗通過的數據,interfaces_set為該項目下所屬的接口信息
?當我的接口id不在我的查詢集中:
?此時校驗不通過,原因是接口表中沒有id為9的接口信息
?綜上所說:
5、如果指定了了read_only=True,那么該字段僅序列化輸出
6、如果只指定了queryset參數(關聯的查尋集對象),用于對參數進行校驗
7、如果關聯字段有多個值,那么必須添加many=True,一般父表獲取從表數據時,關聯字段需要指定
8、PrimaryKeyRelatedField獲取的是從表的主鍵
二、StringRelatedField
將關聯字段模型類中的__str__方法的返回值作為該字段的值
輸出結果如下:
?
?三、SlugRelatedField
1、使用SlugRelatedField字段,將關聯模型類中的某個字段,作為該字段的值
2、如果指定了了read_only=True,那么該字段僅序列化輸出
3、如果該字段需要進行反序列化輸入,那么必須得指定queryset參數,同時關聯字段必須有唯一約束
?四、獲取從表中的多個字段
1、如果想要通過父表(項目表)獲取從表(接口表)得所有字段(id、name、tester),怎么做?
2)、自定義的序列化器類實際上也是Field的子類
3)、所以自定義的序列化器類可以作為另外一個序列化器中的字段來使用
4)、當我從表獲取主表的數據時,用關聯字段projects;以上3種都支持,注意:從表獲取主表數據用不用many=True
?獲取數據
總結
以上是生活随笔為你收集整理的django中序列化器字段参数、关联字段的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: django中序列化、反序列化过程
- 下一篇: DRF框架—序列化器中的字段校验规则