已正确转码的视频标记为活动,而已停用或正在处理的视频标记为非活动。由此,我有两个问题:
1)在数据库中显示它的最佳方式是什么?它是一个布尔型字段active,还是我遗漏的其他东西?
2)处理视频搜索等问题的最佳方式是什么,因为不活跃的视频永远不会出现?有没有一种简单的方法可以在模型定义中设置一个查询,以便只显示活动的视频?
任何关于处理这种活动与非活动情况的最佳方法的解释都将非常有帮助。谢谢。
发布于 2011-08-16 20:56:41
处理此问题的典型方法是在Video模型上创建一个布尔值字段,然后创建一个新的管理器,仅返回活动视频。您甚至可以将此管理器设为默认管理器,以便除非您明确要求不活动的视频,否则将使用此管理器。
这是一个草图:
class InactiveManager(models.Manager):
def get_queryset(self):
return super(InactiveManager, self).get_queryset().filter(active=False)
class ActiveManager(models.Manager):
def get_queryset(self):
return super(ActiveManager, self).get_queryset().filter(active=True)
class Video(models.Model):
title = models.CharField(max_length=200)
active = models.BooleanField()
# Use all_videos to get absolutely everything.
all_videos = models.Manager()
objects = ActiveManager()
inactive = InactiveManager()发布于 2020-12-16 20:59:50
作为Ned的答案,但使用'get_queryset‘而不是'get_query_set’。
我花了两个小时才弄明白'get_query_set‘不起作用。
不幸的是,我不能将此作为对Ned的回答的评论,因为我没有50个名誉点。
class InactiveManager(models.Manager):
def get_queryset(self):
return super(InactiveManager, self).get_queryset().filter(active=False)
class ActiveManager(models.Manager):
def get_queryset(self):
return super(ActiveManager, self).get_queryset().filter(active=True)
class Video(models.Model):
title = models.CharField(max_length=200)
active = models.BooleanField()
# Use all_videos to get absolutely everything.
all_videos = models.Manager()
objects = ActiveManager()
inactive = InactiveManager()https://stackoverflow.com/questions/7078480
复制相似问题