在Django中使用多表(?)继承时get_object_or_404

时间:2017-01-09 07:55:22

标签: python mysql django inheritance

目前正在开发Django 1.6,MySQL和South:

我最近开始使用继承和Django模型。

想知道是否有人遇到过这样的问题,即从django.shortcuts运行get_object_or_404会产生404但没有找到匹配的消息,但是使用model.objects.get(pk = ###)正常编写查询将产生一个答案

我想强调的是,我们继承的模型不是抽象模型。

使用以下代码作为样本:

from django.shortcuts import get_object_or_404

Car(models.Model):
    name = models.CharField(null=True, blank=True, default=None,)
    trunk_size = models.IntegerField(default=0)
    fleet_leader = models.ForeignKey("Car", related_name='car_fleet', null=True, default=None)
    class Meta:
        verbose_name = "Car"
        verbose_name_plural = "Cars"

Bigcar(Car):
    extra_storage_size = models.IntegerField(default=0)
    class Meta:
        verbose_name = "Car"
        verbose_name_plural = "Cars"

所以,如果我进行查询:

get_object_or_404(Car, pk=123)

假设存在带有行或主键123的Car数据条目,我不会得到任何结果,但条目

Car.objects.get(pk=123)

会产生结果。

所以我想知道是否有人知道这些查询是怎么回事?我是否遗漏了在使用继承之后应该实现的一些设置或代码?我查看了Django文档,大部分重点是抽象模型继承用法。

0 个答案:

没有答案