Django 模型。管理器错误

Django 模型。管理器错误,django,django-models,Django,Django Models,型号: 视图: def game_list(request): return render_to_response('games/game_list.html', { 'object_list': GameList.objects.published.all().order_by('position')}) 模板: 属性错误/游戏/ “管理器”对象没有“已发布”属性 我的视图似乎不太喜欢我的新管理器?如果您试图

型号:

视图:

def game_list(request):
        return render_to_response('games/game_list.html',
                                  { 'object_list': GameList.objects.published.all().order_by('position')})
模板:

属性错误/游戏/ “管理器”对象没有“已发布”属性


我的视图似乎不太喜欢我的新管理器?

如果您试图使用已发布的管理器而不是对象管理器,则应该从筛选过程中删除对象引用。此外,发布的管理器是为游戏模型而不是为游戏列表模型声明的。您可能需要稍微重构它的工作方式

编辑:这里有一些可能与您正在尝试的操作相匹配的内容

from django.db import models

class GamePublishedManager(models.Manager):
 use_for_related_fields = True
 def get_query_set(self):
  return super(GamePublishedManager, self).get_query_set().filter(game__status='p')

STATUS_CHOICES = (
    ('d', 'Draft'),
    ('p', 'Published'),
    ('w', 'Withdrawn'),
)

class Game(models.Model):
 name = models.CharField(max_length=200)
 status = models.CharField(max_length=1, choices=STATUS_CHOICES)

 def __unicode__(self):
  return self.name

class GameList(models.Model):
 game = models.ForeignKey(Game)
 position = models.IntegerField()
 objects = models.Manager()
 published = GamePublishedManager()

 def __unicode__(self):
  return self.game.name
新经理的筛选器已更改为引用相关游戏的状态,并且经理已附加到游戏列表模型而不是游戏。现在要使用的命令是:

GameList.published.all().order_by('position')