I am in the middle of developing a Django application, which has quite complicated models (it models a university - courses, modules, lectures, students etc.)
I have
If your dependency is with foreign keys referencing models in other applications, you don't need to import the other model. You can use a string in your ForeignKey definition:
class MyModel(models.Model):
myfield = models.ForeignKey('myotherapp.MyOtherModel')
This way there's no need to import MyOtherModel, so no circular reference. Django resolves the string internally, and it all works as expected.