Je le code suivant:Rédaction d'un gestionnaire pour filtrer ensemble de résultats de requête
class GroupDepartmentManager(models.Manager):
def get_query_set(self):
return super(GroupDepartmentManager, self).get_query_set().filter(group='1')
class Department(models.Model):
name = models.CharField(max_length=128)
group = models.ForeignKey(Group)
def __str__(self):
return self.name
objects = GroupDepartmentManager()
... et il fonctionne très bien. La seule chose est que je dois remplacer group='1'
avec group=(the group specified by group = models.ForeignKey(Group))
. Je passe un certain temps à essayer de déterminer si cette clé étrangère doit être transmise dans la classe, ou dans la fonction get_query_set, ou quoi. Je sais que vous pouvez accomplir ceci avec group.department_set.filter(group=desired group)
, mais j'écris ce modèle pour le site d'admin, ainsi j'ai besoin d'employer une variable et pas une constante après le signe =.
J'ai de la difficulté à comprendre ce que vous essayez d'accomplir. Voulez-vous que department_instance.objects.all() renvoie uniquement les départements appartenant au même groupe que department_instance? - Maciej Pasternacki il ya 0 secondes –
Oui John votre cas n'est pas clair. Qu'est-ce qui a défini quel groupe doit être sélectionné par Department.objects.all(), par exemple? – kibitzer
Ok, donc il y a une liste de groupes. Chaque groupe a quelques départements. J'ai aussi quelques employés. Chaque employé appartient à exactement un groupe et un département. Lorsque je modifie un employé, la liste déroulante des services affiche tous les départements de la base de données, et pas seulement les départements du groupe de l'employé. Donc, je veux seulement montrer les départements dans le groupe de l'employé. J'ai pensé que je pouvais le faire en limitant les résultats du département à ceux d'un groupe particulier. Peut-être que je suis vraiment confus. Mais c'est ce que j'essaie d'accomplir. – John