小编rot*_*rot的帖子

Django模型子类化:通过查询超类来获取子类

给出以下代码:

class BaseMedium(models.Model):
    title = models.CharField(max_length=40)
    slug = models.SlugField()

class A(BaseMedium):
    url = models.URLField()

class B(BaseMedium):
    email = models.EmailField()
Run Code Online (Sandbox Code Playgroud)

我现在想查询每个BaseMedium.

b = BaseMedium.objects.all()
Run Code Online (Sandbox Code Playgroud)

如何在不知道子类类型的情况下打印包括子类字段在内的所有信息?

b[0].a如果b[0]实际上与A实例相关,则会打印信息,但如果与实例相关,B则会打印DoesNotExist异常.

这是有道理的,但我想有一个返回相关对象的公共变量或方法.

也许我的数据库布局不是那么好查询,如果是这样我会很高兴,如果你建议一个更好的布局.

我想过用一个 GenericForeignKey

class Generic(models.Model):
    basemedium = models.ForeignKey('BaseMedium')
    content_type = models.ForeignKey(ContentType)
    object_id = models.PositiveIntegerField()
    object = generic.GenericForeignKey('content_type', 'object_id')
Run Code Online (Sandbox Code Playgroud)

但这个解决方案似乎很复杂,我认为你们有更好的解决方案.

python django django-models

8
推荐指数
2
解决办法
1万
查看次数

标签 统计

django ×1

django-models ×1

python ×1