为什么Django没有序列化完整的模型关系?

时间:2013-09-26 20:05:11

标签: python django json serialization

问题很简单: 我知道Django在使用

时不会序列化相关模型
serialize("json", queryset)

例如:如果我有一本作者的书:

class Book(models.Model):
    author = models.ForeignKeyField(Author)

序列化时,我得到了Books字段,但只有作者的pk。 这是为什么?这是一个设计决定吗?如果就是这样,为什么?

1 个答案:

答案 0 :(得分:1)

可以使用自然键,自定义管理器和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"]
    }
}