Creando consultas de bases de datos eficientes para modelos jerárquicos (django)
Considere este modelo (django):
class Source(models.Model):
# Some other fields
type = models.ForeignKey('Type')
class Type(models.Model):
# Some other fields
parent = models.ForeignKey('self')
ste modelo tiene una clave foránea para sí mismo, creando así una jerarquí
Digamos que tenemos la siguiente jerarquía:
Website
Blog
News
Social Network
Q&A
Forum
Radio
Government radio
Pirate radio
Commercial radio
Internet radio
¿Cómo hago una consulta eficiente para que si seleccionoSource
porType
, También recuperoSources
que tienen unType
que es un hijo del tipo dado?
e intentado atravesar todo el árbol, pero obviamente no es muy eficiente.
Otra opción sería utilizar ManyToManyField y adjuntar automáticamente los tipos principales anulando el método save (). Por ejemplo, si se selecciona 'blog', también se crea un registro para 'sitio web'. Pero esto me parece excesivo.