【发布时间】:2022-01-13 18:43:41
【问题描述】:
我有三个模型,Product、ProductRelease 和 ReleaseNote,它们都继承自抽象模型工厂(具有公共字段),具有以下关系:
class Product(abstract_base_model_factory()):
<additional fields>
class ProductRelease(abstract_base_model_factory()):
<additional fields>
product = models.ForeignKey(Product, on_delete=models.CASCADE,
related_name='product_releases')
class ReleaseNote(abstract_base_model_factory()):
<additional fields>
product_release = models.ForeignKey(ProductRelease, on_delete=models.CASCADE,
related_name='release_notes')
我已按照文档对这些进行序列化以返回 JSON。我使用docs here 来设置自然键的序列化。
如果需要,我可以添加额外的代码,但它主要是样板代码,并且适用于两个模型(ProductRelease 和 Product 或 ReleaseNote 和 ProductRelease)。但它不适用于三个模型。
例如,如果我序列化ProductRelease 对象,我可以看到Product 和我指定的字段:
{
"product_releases": [
{
"model": "products.productrelease",
"pk": 7,
"fields": {
"name": "Product Release A",
"product": "prod1"
}
},
{ . . . },
]
}
但是,我希望能够序列化 ReleaseNote 对象,然后显示 ProductRelease(第一个外键关系)和 Product(第二个外键关系)对象。
这可以在单个 JSON 响应中完成,而无需使用 Django REST Framework 之类的包吗?我想在不需要额外软件包的情况下实现这一点。
更新
一段时间后,我意识到@oleksii 是对的。我最终实现了 Django REST 框架并得到了我需要的嵌套。效果很好。
【问题讨论】:
标签: django serialization django-related-manager