Tengo el siguiente código:Escribir un gestor de filtrar conjunto de resultados de consulta
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()
... y funciona bien. Lo único es que tengo que reemplazar group='1'
con group=(the group specified by group = models.ForeignKey(Group))
. Estoy teniendo bastante tiempo tratando de determinar si esa clave externa debe pasarse a la clase, o a la función get_query_set, o qué. Sé que puede lograr esto con group.department_set.filter(group=desired group)
, pero estoy escribiendo este modelo para el sitio de administración, así que necesito usar una variable y no una constante después del signo =.
Tengo algunos problemas para entender lo que está tratando de lograr. ¿Desea que department_instance.objects.all() devuelva solo los departamentos que están en el mismo grupo que department_instance? - Maciej Pasternacki 0 secs ago –
Sí John su caso no está claro. ¿Qué definió qué grupo debe ser seleccionado por Department.objects.all(), por ejemplo? – kibitzer
Bien, entonces hay una lista de Grupos. Cada grupo tiene algunos departamentos. También tengo algunos empleados. Cada empleado pertenece exactamente a un Grupo y un Departamento. Cuando edito un empleado, la lista desplegable de departamentos muestra todos los departamentos en la base de datos, no solo los departamentos en el grupo de empleados. Por lo tanto, solo quiero mostrar los departamentos en el grupo de empleados. Pensé que podría hacer esto al limitar los resultados de department_set a los departamentos dentro de un grupo en particular. Tal vez estoy realmente confundido. Pero eso es lo que estoy tratando de lograr. – John