Iterating through a ManyToManyField with a DeferredThroughModel gives back Expression objects
Eureka! I solved the problem.

I did not perform `.set_model()` to the `DeferredThroughModel` instance I was using for `Class`. It was only being used inside a function that only gets called during creation of the database file causing the field to be unbounded and causing my problem when the database file was not being created. Using `.set_model()` outside the function and during the initialization of the module all of my models reside in fixed the issue.

**TL;DR to those folks who might come across the same problem:** Make sure `.set_model()` for all `DeferredThroughModel` instances gets called before using the model the `DeferredThroughModel` is used in.
I have a two models, `Class` and `TimeSlot`. `Class` has a many-to-many field, `timeslots`, to `TimeSlot`. The field uses a `DeferredThroughModel`.

Now, say I have an instance of `Class` in a variable called `class`. I want to iterate through the `timeslots` of `class`, so let's do:

    for timeslot in class.timeslots:
        print(type(timeslot))

However, the type of `timeslot` is `Expression` and not `TimeSlot`. `class.timeslots` also gives back a `ManyToManyField: (unbound)` instead of `ManyToManyQuery`. This problem only affects `Class`. Other classes that use a `ManyToManyField` without a `DeferredThroughModel` just do fine.

How do you fix this problem?