【发布时间】:2026-02-13 14:55:01
【问题描述】:
我在 Django 中有这个模型(基于旧数据库):
class NationalTest(models.Model):
unityId = models.IntegerField(primary_key=True)
parentId = models.IntegerField(blank=True)
grade = models.FloatField(blank=True)
此模型存储“统一”(我国的一所学校、一个城市、一个地区或一个州)在全国考试中获得的成绩。 unityId是unity的id,grade是它的考试成绩,parentId是它的上父id(即:如果我们的unity是学校,parentId是所在城市的id学校所在的位置;如果是城市,parentId 是城市所在州的 id,依此类推)。
出于前端的目的,当我获取某个学校的成绩时,我还需要城市、州、地区和整个国家的成绩(所有 5 个级别都可能)。当我获取一个城市的等级时,我还需要州、地区和国家的等级。当我获取州的等级时,只需要等级以上的两个等级。
我认为我可以解决它的最好方法是创建一个基于parentId 的嵌套序列化程序。我知道当我们有来自另一个模型的外键时该怎么做,但是当外键在同一个模型中时我该怎么做(即:它是unityId)? p>
我需要这样的东西来获取:
{
unityId: 2393044, // It is a school
parentId: 239, // In this case, it is a city
grade: 7.3,
city: {
unityId: 239
parentId: 23
grade: 8.2,
},
state: {
unityId: 23
parentId: 2
grade: 7.5,
},
region: {
unityId: 2
parentId: 1
grade: 7.9,
},
country: {
unityId: 1
parentId: null
grade: 7.7,
},
}
【问题讨论】:
-
你为什么不使用外键来访问 parentId?@André Carvalho
-
@EliakinCosta 如果它是旧数据库,它可以工作吗?
-
是的,它有效。您应该查看 inspectdb 以了解更多详细信息。
标签: python django api rest django-rest-framework