Si vous essayez d'utiliser le gestionnaire publié à la place du gestionnaire d'objets, vous devez supprimer la référence des objets du processus de filtrage. En outre, le gestionnaire publié est déclaré pour le modèle de jeu, pas pour le modèle GameList. Vous aurez probablement besoin de refactoriser comment cela fonctionne légèrement.
Editer: Voici quelque chose qui pourrait correspondre à ce que vous essayez de faire.
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
filtre de votre nouveau gestionnaire a été modifié pour faire référence à l'état du jeu lié, et le gestionnaire a été attaché au modèle de GameList au lieu de jeu. La commande à utiliser maintenant serait:
GameList.published.all().order_by('position')
Exactement ce dont j'avais besoin, merci. –