Ich würde erstmal alle Namen auf Englisch übertragen - wenn das Projekt schon course app heißt, dann sollten auch alle Models und deren Attribute konsistent sein. Benutzt du
South für Migrationsmanagement? Weil das ist echt nützlich für eine versionierte Datenbankstruktur, wenn du das Projekt weiter entwickelst und es unter Versionskontrolle (z.B. Git) hast.
So wie ich das sehe hast du keine spezifische Reihenfolge bei den Lernbausteinen innerhalb der Handlungsbereiche festgelegt. Außer bei den Voraussetzungen, die aber ihrerseits ein TextField sind. Vorausgesetzt, dass man die Kurse linear durchläuft, würde ich dort stattdessen ein parent Feld mit der ID des vorherigen Bausteins anlegen. Ist dies der erste Schritt, ist die Vorraussetzung NULL. Soll es mehrere Vorraussetzungen geben, solltest du dann für jeden Baustein diese in einer separaten Tabelle ablegen. Mehrere Werte in einem Feld sollte man unbedingt vermeiden.
Das Gleiche gilt für die Aufgaben (bei denen du allerdings doppelt das Feld text hast, was auch immer das sein soll). Bei den Aufgaben kannst du dir auch die 2 Tabellen sparen und einfach ein booleanField einfügen, das bestimmt ob es eine Vertiefungsaufgabe ist oder nicht - so musst du dir nur über eine Datenstruktur Gedanken machen.
Außerdem möchtest du sicher verschiedene Benutzer in deiner Webapp haben, also plane am besten gleich ein Besitzer Feld bei den Kursen ein. Den Individuellen Fortschritt der Anwender solltest du dann in einer separaten Tabelle verfolgen.
Ich empfehle dir mal diesen Artikel zu lesen:
http://de.wikipedia.org/wiki/Normalisierung_(Datenbank)
Außerdem kann man sich auch mal
hier und
hier umschauen. Wobei der zweite Link ein bisschen alt ist, aber dafür auch sehr verständlich über Django informiert. Aber die hast du wahrscheinlich eh schon gelesen.
Das sind nur Vorschläge meinerseits, du musst dich nicht genötigt fühlen diese umzusetzen und einen Anspruch auf Perfektion erhebe ich auch nicht.

Ich hoffe das hat dir geholfen.