進行資料的校驗
對資料物件進行轉換
class bookinfoserializer(serializers.serializer):
"""圖書資料序列化器"""
id = serializers.integerfield(label='id', read_only=true)
btitle = serializers.charfield(label='名稱', max_length=20)
bpub_date = serializers.datefield(label='發布日期', required=false)
bread = serializers.integerfield(label='閱讀量', required=false)
image = serializers.imagefield(label='', required=false)
class meta:
model = bookinfo
fields ='__all__'
字段
字段構造方式
booleanfield
booleanfield()
nullbooleanfield
nullbooleanfield()
charfield
charfield(max_length=none, min_length=none, allow_blank=false, trim_whitespace=true)
uuidfield
uuidfield(format=『hex_verbose』)
ipaddressfield
ipaddressfield(protocol=『both』, unpack_ipv4=false, **options)
integerfield
integerfield(max_value=none, min_value=none)
floatfield
floatfield(max_value=none, min_value=none)
decimalfield
decimalfield(max_digits, decimal_places, coerce_to_string=none, max_value=none, min_value=none)
datetimefield
datetimefield(format=api_settings.datetime_format, input_formats=none)
datefield
datefield(format=api_settings.date_format, input_formats=none)
filefield
filefield(max_length=none, allow_empty_file=false, use_url=uploaded_files_use_url)
imagefield
imagefield(max_length=none, allow_empty_file=false, use_url=uploaded_files_use_url)
引數名稱
作用max_length
最大長度
min_length
最小長度
allow_blank
是否允許為空
trim_whitespace
是否截斷空白字元
max_value
最小值min_value
最大值
引數名稱
說明read_only
表明該字段僅用於序列化輸出,預設false
write_only
表明該字段僅用於反序列化輸入,預設false
required
表明該字段在反序列化時必須輸入,預設true
default
反序列化時使用的預設值
allow_null
表明該欄位是否允許傳入none,預設false
validators
該欄位使用的驗證器
error_messages
包含錯誤編號與錯誤資訊的字典
label
用於html展示api頁面時,顯示的欄位名稱
help_text
用於html展示api頁面時,顯示的字段幫助提示資訊
表結構
序列化器**:
class assetserializer(serializers.modelserializer):
location_detail__name = serializer.charfield(source='location_detail.name',read_only=true)
location_detail_-room__name = serializer.charfield(source='location_detail.room.name',read_only=true)
location_detail__room__building__name = serializer.charfield(source='location_detail.room.building.name',read_only=true)
location_detail__room__building__region__name = serializer.charfield(source='location_detail.room.buidling.region.name',read_only=true)
class meta:
model = asset
fields = '__all__'
總結表結構class deviceonservice(models.model):
on_service_type_choices = (
('0','普通裝置上線'),
('1','普通裝置上線'),
('2','普通裝置上線'),
)update_time = models.datetimefield(null=true,blacnk=true,verbose_name='購買時間')
序列化器**class deviceonserviceserializer(serializer.modelserializer):
on_service_type__display_name = serializers.choicefield(choices=deviceonservice.on_service_type_choices,source='get_on_service_type_display',read_only=true)
# 時間型別,傳給前端時,也需要特殊處理,規定顯示格式。
update_time = serializers.datetimefield(format('%y-%m-%d %h:%m:%s'),required=false,allow_null=true)
總結表結構class role(models.model):
name = models.charfield(max_length=128,verbose_name='角色',default='guest')
info = models.charfield(max_length=128,verbose_name='說明',default='請輸入角色說明')
class meta:
verbose_name = '角色'
verbose_name_plural = verbose_name
序列化器**class roledisplayserializer(serializers.modelserializer):
key = serializers.intergerfield(source='id',read_only=true)
label = serializers.serializermethodfield()
class meta:
model = role
fields = ('key','label')
def get_label(self, obj):
return '{}({})'.format(obj.name,obj.info)
總結 django的序列化
關於django的序列化主要應用在將資料庫中檢索的資料返回給客戶端使用者,特別的ajax請求一般返回的json格式 兩種方法 缺點就是只能應用於物件 ret models.book.objects.filter con print ret queryset,物件 就是上面是列表 from djang...
Django的序列化
關於django中的序列化主要應用在將資料庫中檢索的資料返回給客戶端使用者,特別的ajax請求一般返回的為json格式。1 serializers,django內建 from django.core import serializers ret models.booktype.objects.all...
Django序列化與反序列化
新建乙個模型類 class userinfo models.model name models.charfield max length 20 password models.charfield max length 11 addkey models.foreignkey addressinfo c...