Django Styleguide
I think there are too many concepts in this, but rather than being negative, here are some tips:<p>Always keep your models slim. Don&#x27;t stuff template related stuff in there. You need to look at those models often, so compact is a win. course_has_finished(course) is not much longer than course.has_finished(), and will allow you to expand the functionality as time goes on. Do precomputation if you need the information in a template - that keeps your templates simpler and allows you to easily expand the complexity of the precomputation.<p>Don&#x27;t use class-based views, at least not outside very specific niches like the Django admin. Class-based views will transform a simple, composeable call stack into a ball of inheritance mud. Inheritance is not a good code reuse tool.<p>Don&#x27;t make separate apps in the same project, unless the project actually consists of several different, completely independent projects. You can make subdirectories without making apps, and thus avoid dependency hell.<p>Also be wary of the formerly South, now built-in migrations stuff. It&#x27;s built around a fragile model (perfect history representation), so has lots of foot guns.<p>And be wary of 3rd party libraries with their own models. You can spend a lot of time trying to built bridges to those models compared to just doing what makes sense for your particular project. I think 3rd party libraries are perhaps best implemented without concrete models - duck-typing in Python let us do this. This includes Django itself, by the way. User profiles didn&#x27;t become good until Django allowed you to define the user model yourself.