首先我們在models下新建兩個模型類
class user(softdeletemode):
gender_choices = (
('1', '普通會員'),
('2', 'vip會員')
)name = models.charfield(max_length=100, verbose_name='暱稱')
phone = models.charfield(max_length=11, verbose_name='手機號', unique=true)
password = models.charfield(max_length=255, verbose_name='密碼')
level = models.charfield(max_length=20, choices=gender_choices, verbose_name='使用者身份')
class meta:
db_table = 'user'
verbose_name = '使用者表'
ordering = ['-id'] # 根據id倒序排列
# 呼叫時返回自身的屬性,不然都是顯示xx object
def __str__(self):
return self.name
class bookinfo(softdeletemode):
title = models.charfield(max_length=20, verbose_name='名稱')
read = models.integerfield(default=0, verbose_name='閱讀量')
author = models.foreignkey(user, on_delete=models.cascade, error_messages=) # 外來鍵
class meta:
db_table = 'tb_books' # 指明資料庫表名
verbose_name = '圖書' # 在admin站點中顯示的名字
def __str__(self):
"""定義每個資料物件的顯示資訊"""
return self.title
每個模型定義乙個serializers.modelserializer
class userserializer(serializers.modelserializer):
class meta:
model = user
fields = ['id', 'name', 'phone', 'level']
class bookserializer(serializers.modelserializer):
class meta:
model = bookinfo
fields = ['id', 'title', 'read', 'comment','author']
通過postman請求我們的介面可以看到,author作為外來鍵序列化後,返回的是user裡的id。(忽略欄位_create_time和_update_time)
如果我們想要返回具體外來鍵裡的值,應該怎麼看呢。
class bookserializer(serializers.modelserializer):
class meta:
model = bookinfo
# 取出所有的字段
# 在bookserializer中我們定義乙個方法,獲取外來鍵對應的資料
def get_author(self, obj):
authors_query_set = obj.author # 拿到所有作者資訊 (obj是user物件)
可以在serializers.modelserializer
中定義與author欄位相同的屬性,並例項化serializers.primarykeyrelatedfield
物件
class bookserializer(serializers.modelserializer):
# 必須要傳的引數,queryset查詢集,這裡我們的主表是user表,所以定義了user的查詢集
# error_messages: 錯誤提示資訊,如果物件未找到對應的key:does_not_exist
author = serializers.primarykeyrelatedfield(queryset=user.objects.all(), error_messages=)
class meta:
model = bookinfo
fields = ['id', 'title', 'read', 'comment']
def get_author(self, obj):
authors_query_set = obj.author # 拿到所有作者資訊
return
實現效果: rest framework序列化器的使用demo
from rest framework import serializers 匯入對應的序列化器的類 from models import bookread only true是定製json序列化的key,write only true是定製反序列的key,提交post已經put請求時需要注意key...
rest framework之序列化詳解 06
拿到所有的角色資料 1.urls.py 2.models.py 假設只有3個角色 3.views.py from api import models import json json只能序列化python的基本資料型別 querydict是django定義的類 所以以下這種操作會報錯 4.解決方案 ...
學習週報 rest framework
本週學習情況 1.rest framework的學習 2.前後端分離5 2到5 6 下週學習計畫 停止課程內容學習 2.花10學習rest framework基礎的學習 本週完成情況 一 fbv,cbv 繼承 避免重複 1 優先順序從左往右 2 super 1.先在studentsview裡面查詢,...