django序列化時使用外來鍵的真實值

2021-07-04 02:41:38 字數 1500 閱讀 7297

一般情況下序列化得到的外來鍵的內容只是id:

...

, model: "amazingtable.content",

pk: 1

}...

序列化時得到外來鍵的真實值:
...

, model: "amazingtable.content",

pk: 1

}...

我序列化的是content表,它含有乙個外來鍵關聯的是module表,1對多

我要先序列化module表,然後序列化content表的時候才可以使用到module的真實值

class

modulemanager

(models.manager):

defget_by_natural_key

(self, name, description):

return self.get(name = name, description = description)

class

module

(models.model):

objects = modulemanager()

name = models.charfield(max_length=100, unique=true)

description = models.charfield(max_length=100, blank=true, null=true)

# natual_key的序列化

defnatural_key

(self):

return (self.name, self.description)

# natual_keys的解序列化

class

meta:

unique_together = (('name', 'description'),)

序列化是否使用真實值:

jsons = serializers.serialize('json', queryset,use_natural_foreign_keys=false)

jsons = serializers.serialize('json', queryset,use_natural_foreign_keys=true)

如果要給content表序列化,那麼要使用到外來鍵的actual_key,要保證外來鍵先序列化,如下依賴:

class

content

(models.model):

name = models.charfield(max_length=100)

...module = models.manytomanyfield('module')

defnatural_key

(self):

return (self.name,) + self.module.natural_key()

# 和"def"同縮排

django序列化時使用外來鍵的真實值

普通情況下序列化得到的外來鍵的內容僅僅是id model amazingtable.content pk 1 序列化時得到外來鍵的真實值 model amazingtable.content pk 1 我序列化的是content表。它含有乙個外來鍵關聯的是module表。1對多 我要先序列化modu...

jsonconvert 序列化時忽略指定的型別

定義自定義轉換類來忽略特定型別 自定義轉換類 public class customconverter jsonconverter public override void writejson jsonwriter writer,t value,jsonserializer serializer 轉...

django的序列化

關於django的序列化主要應用在將資料庫中檢索的資料返回給客戶端使用者,特別的ajax請求一般返回的json格式 兩種方法 缺點就是只能應用於物件 ret models.book.objects.filter con print ret queryset,物件 就是上面是列表 from djang...