的問題很簡單: 使用爲什麼Django沒有序列化完整的模型關係?
serialize("json", queryset)
在例如當我知道,Django會不序列相關機型:如果我有一本書的作者:
class Book(models.Model):
author = models.ForeignKeyField(Author)
當序列化,我得到Books字段,但只有作者的PK。 這是爲什麼?這是一個設計決定嗎?如果是這樣,爲什麼?
的問題很簡單: 使用爲什麼Django沒有序列化完整的模型關係?
serialize("json", queryset)
在例如當我知道,Django會不序列相關機型:如果我有一本書的作者:
class Book(models.Model):
author = models.ForeignKeyField(Author)
當序列化,我得到Books字段,但只有作者的PK。 這是爲什麼?這是一個設計決定嗎?如果是這樣,爲什麼?
它可以使用自然鍵,自定義管理器和get_by_natural_key()
。 Django doc有完整的解釋,請read here。我寧願不復制粘貼在這裏的一切。
通過使用這種方法,你可以把經常系列化這樣的 -
{
"pk": 1,
"model": "store.book",
"fields": {
"name": "Mostly Harmless",
"author": 42
}
}
爲了這一點 -
{
"pk": 1,
"model": "store.book",
"fields": {
"name": "Mostly Harmless",
"author": ["Douglas", "Adams"]
}
}
我已經閱讀了文檔,我並不是說它不起作用,但它肯定不是直觀的。例如:現在你需要作者的家鄉......你做什麼? +1,因爲文檔是學習的最佳地方 – Alvaro
@Alvaro您修改'natural_key()'方法以返回家鄉,然後修改'get_by_natural_key()'方法以使作者使用所有3個屬性。 –
它獲取數據庫字段。相應的數據庫條目存儲爲'ForeignKey'字段的'id' – karthikr
就像@ karthikr所說的,它的db相關。查看dumpdata命令,該命令採用「--natural」參數,通過ContentTypes框架描述關係的更詳細的方式 –
dbrelated是什麼意思?我期待着一些「很難反序列化」的東西。此外,如果這個關係是多對多的,那麼它就有智能去查看相應的表格。 – Alvaro