gpt4 book ai didi

python - django中的多表继承

转载 作者:行者123 更新时间:2023-11-28 17:50:08 24 4
gpt4 key购买 nike

我在 Django 中使用多表继承。 Model Ninja 继承自 Person。在我的测试中,我创建了两个 Ninja 实例和一个 Person 实例。我在做:

self.assertEquals(Person.objects.count(), 3)

但计数是 1。为什么不是 3?我的印象是为每个 Ninja 创建了一个 Person 表。

最佳答案

根据您的描述,忍者是一个人。因此,你有三个人:1 个普通人,2 个忍者。

这是预期的行为。如果你想知道 Persons 不是其他任何东西(在你的情况下不是 Ninja),你必须明确地向 ORM 询问它。例如:

Person.objects.
exclude(id__in=Ninja.objects.values('id')).
exclude(id__in=SomeOtherPersonSubclass.objects.values('id'))

我不确定代码是否正确/有效,但我认为它传达了这个想法。

您的数据库未按预期运行(如您在评论中所述)的事实是,为了拥有 Ninja 实例,可以说它需要 Person“部分”。你必须有类似的东西:

[
{
"model": "myapp.person",
"pk": 1,
"fields": {
"first_name": "John",
"last_name": "Lennon"
}
},
{
"model": "myapp.person",
"pk": 2,
"fields": {
"first_name": "Hattori",
"last_name": "Hanzo"
}
},
{
"model": "myapp.ninja",
"pk": 2,
"fields": {
"super_power": "fearless tactics"
}
}
]

关于python - django中的多表继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11841506/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com