У меня есть класс модели Django, которые охватывают различные типы классов моделей, таких как:Альтернатива Джанго конкретное наследство
Content > (Audio, Video, Image)
Я хочу, чтобы выполнять запросы на этой родительской модели, как Content.objects.filter() или Контента. objects.recent(). Как мне это сделать? В настоящее время я использую наследование конкретной модели django, которое, я полагаю, накладывает много внимания на производительность db, используя объединения для родительских классов. Я не могу использовать абстрактный класс, потому что это не позволит мне выполнять запросы в родительском классе. Вот мои определения моделей:
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)
Заранее спасибо.