django - models.Manager错误

标签 django django-models

型号:http://dpaste.com/96349/

查看:

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

模板:

/games/处的属性错误 “Manager”对象没有属性“published”

我的观点似乎不太喜欢我的新经理?

最佳答案

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

编辑:这可能与您想要做的事情相匹配。

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 模型而不是 Game。现在使用的命令是:

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

关于django - models.Manager错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1455291/

相关文章:

django - 为什么必须将 id 和 pk 设置为 None 才能复制带有继承的 Django 模型?

django - 如何在 django-tastypie 中对 resource_uri 进行水合?

python - 如果执行多个 runcron 会发生什么

带有 django autocomplete-light 的 django-filter

python - 名称错误 django send_mail

django - django 对象级权限

python - 如何在 Django 中使用 Pytest 测试经过身份验证的 POST 请求

Django 自动化同步数据库

Django 更新表单

Django 管理员 : change displayed column name in inline ManyToMany field