序列化(模型序列化 序列化巢狀)

2022-07-08 07:12:08 字數 2463 閱讀 5712

from rest_framework import serializers

from meituan.models import merchant,

class merchantserializer(serializers.modelserializer):

class meta:

model = merchant

# 要展示的字段列表,為「__all__」時則全部展示

fields = "__all__"

# 定義不展示哪些字段

# exclude = ['name']

class merchant(models.model):

"""商家

"""name = models.charfield(max_length=200,verbose_name='商家名稱',null=false)

address = models.charfield(max_length=200,verbose_name='商家',null=false)

logo = models.charfield(max_length=200,verbose_name='商家logo',null=false)

notice = models.charfield(max_length=200, verbose_name='商家的公告',null=true,blank=true)

up_send = models.decimalfield(verbose_name='起送價',default=0,max_digits=6,decimal_places=2)

lon = models.floatfield(verbose_name='經度')

lat = models.floatfield(verbose_name='緯度')

created = models.foreignkey(user,on_delete=models.set_null,null=true)

class goodscategory(models.model):

"""商家商品分類

"""name = models.charfield(max_length=20,verbose_name='分類名稱')

merchant = models.foreignkey(merchant,on_delete=models.cascade,verbose_name='所屬商家',related_name='categories')

from rest_framework import serializers

from meituan.models import merchant,goodscategory,goods

class merchantserializer(serializers.modelserializer):

class meta:

model = merchant

# 要展示的字段列表,為「__all__」時則全部展示

fields = "__all__"

# 定義不展示哪些字段

# exclude = ['name']

class goodsserializer(serializers.modelserializer):

class meta:

model = goods

fields = "__all__"

class goodscategoryserializer(serializers.modelserializer):

merchant = merchantserializer(read_only=true)

merchant_id = serializers.integerfield(write_only=true)

goods_list = goodsserializer(many=true,read_only=true)

class meta:

model = goodscategory

fields = "__all__"

def validate_merchant_id(self,value):

if not merchant.objects.filter(pk=value).exists():

raise serializers.validationerror("商家不存在!")

return value

def create(self,validated_data):

merchant_id = validated_data.get('merchant_id')

merchant = merchant.objects.get(pk=merchant_id)

category = goodscategory.objects.create(**validated_data,merchant=merchant)

return category

序列化(序列化)

原書上翻譯為序列化,msdn翻譯為序列化 作用 當需要儲存,或者網路傳輸 remoting時,資料 物件或值 需要序列化 類似於打包傳輸檔案。system.serializableattribute 序列化是指儲存和獲取磁碟檔案 記憶體或其他地方中的物件。在序列化時,所有的例項資料都儲存到儲存介質上...

序列化和解序列化

serialize 返回乙個字串,包含著可以儲存於 php 的任何值的位元組流表示。unserialize 可以用此字串來重建原始的變數值。用序列化來儲存物件可以儲存物件中的所有變數。物件中的函式不會被儲存,只有類的名稱。要能夠unserialize 乙個物件,需要定義該物件的類。也就是,如果序列化...

序列化反序列化

只要用到網路開發啊,就一定會用到序列化反序列化。1,自定義結構體 struct test int len int type char data 10 test data test buffer.缺點 明文,只支援基本型別,不支援變長結構 2,在1的基礎上,自定義乙個緩衝類,存放乙個訊息。把訊息寫入緩...