継承マネージャーに django-model-utils を使用しています。一度に 1 つのサブクラスのみの結果を取得したい。
manager.py
from model_utils.managers import InheritanceManager
class PostManager(InheritanceManager):
pass
models.py
from .managers import PostManager
class Post(models.Model):
title = models.CharField(max_length=20)
text = models.TextField()
objects = PostManager()
class ImagePost(Post, models.Model):
source = models.URLField()
image = models.ImageField(upload_to="images/%Y/%m/%d")
class VideoPost(Post, models.Model):
source = models.URLField()
画像タイプのみの結果を返したい。このようなより単純なクエリを書くことによって。
Post.objects.filter(type='image').select_subclasses()
私が試したこと:
if type == 'image':
Post.objects.filter(imagepost__isnull=False).select_subclasses()
これは機能しますが、一種のアンチパターンです。すべてのコンテンツ タイプのビューに条件を記述したくありません。
モデルでプロパティを定義したり、マネージャー メソッドに変換したりするより良い方法はありますか? または私は何かを逃していますか?