我有一个Django模型类,它包含各种类型的模型类,如:
Content > (Audio, Video, Image)
我想对这个父模型执行查询,如Content.objects.filter()或Content.objects.recent()。我怎么来这个?目前我正在使用django的具体模型继承,我想通过使用父类的连接来强加大量的数据库性能。我不能使用抽象类,因为这不允许我在父类上执行查询。以下是我的模型定义:
class BaseContent(models.Model):
"""
Concrete base model to encompass all the local and social content.
We need a single queryset for all the content on the app.
"""
title = models.CharField(_('title'), max_length=255, default='')
description = models.TextField(_('description'), default='', blank=True)
publisher = models.ForeignKey(settings.AUTH_USER_MODEL)
allow_comments = models.BooleanField(default=False)
is_public = models.BooleanField(default=True)
created = AutoCreatedField(_('created'))
objects = BaseContentManager()
class Video(BaseContent):
ACTIVITY_ACTION = 'posted a video'
UPLOAD_TO = 'video_files/%Y/%m/%d'
PREVIEW_UPLOAD_TO = 'video_frames/%Y/%m/%d'
video_file = models.FileField(_('video file'), upload_to=UPLOAD_TO)
preview_frame = models.ImageField(
_('Preview image'), upload_to=PREVIEW_UPLOAD_TO, blank=True,
null=True)
category = models.ForeignKey(VideoCategory, blank=True, null=True)
num_plays = models.PositiveIntegerField(blank=True, default=0)
num_downloads = models.PositiveIntegerField(blank=True, default=0)
提前致谢。
答案 0 :(得分:1)
我有一个类似的场景,我使用一个名为Django Polymorphic的外部解决方案,该库似乎无缝地工作。一些主要项目使用Django Polymorphic,包括Django-shop。
链接: https://github.com/chrisglass/django_polymorphic
请不要在此引用我,但我已经阅读了一些过去提到django_polymorphic模型没有由标准Django ORM具体继承实现引起的相同性能问题的来源。