次のようなさまざまなタイプのモデルクラスを含む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)
前もって感謝します。