Adrian González
PreguntaCuál es la diferencia entre poner ‘app.model’ y solo el nombre del modelo en el campo Foreignkey o ManyToManyField?

Eduardo José Álvarez
Cuando pones como
string

Andres Rodriguez
Cuando pasas una clase de python a la función ForeignKey o ManyToManyField, Django debe resolver la clase que pasas por parametro, lo que puede llevar a un problema de dependencia cíclica si tus modelos dependen uno de otro de forma cíclica. Esto es un problema que se puede solucionar deshaciendo estas dependencias cíclicas, modelandolas de una forma diferente.
Muchas veces, la naturaleza de tus modelos es así, cíclica, y no puedes evitarlo. Es en ese caso cuando usas una lazy-relationship del tipo 'app.model'. Si te fijas, estás pasando un string de python, y no una clase, y por tanto Django no necesita resolver ningún modelo para terminar de resolver otro, eliminando el problema de la dependencia cíclica.