Самый главный навык, которым вы должны обладать - это python. Вы должны знать базовые конструкции языка, уметь пользоваться генераторами списков, отличать экземпляры от классов и т.п.
Django повсеместно использует классы и наследование. Вы должны уметь отвечать на базовые вопросы по ООП, его реализацию в Python. Понимать, как работает наследование, как сделать перегрузку базового класса и вызвать конструктор родителя.
Так как Django - это мощный ORM, вы должны понимать, как делать простые SQL запросы, как проверить миграцию, какая разница между пустым значением и значением, заполненным пустотой. Так же отличать JOIN'ы и уметь их применять в правильном контексте.
Обладать базовым пониманием HTML и CSS, в идеале - умением что-то подхачить на JS.
Что абсолютно логично. Вы запрашиваете местоположение файла, в котором выполняете код: os.path.dirname(__file__). Если вам надо получить значение адреса верхнего уровня:
Инициализируйте константу в точке входа и подключите её в необходимом модуле. ИЛИ
Вручную укажите, на сколько уровней выше надо вернуться из текущего файла.
Это не костыль, а вполне адекватное решение.
Оптимизация запросов и индексы - это сторона базы данных.
Совершенно нормально пойти и создать индексы для таблицы/столбцов, которые ваше приложение использует больше всего. Собственно, по этому такая профессия, как администратор баз данных, живёт и процветает.
Ещё хорошей альтернативой является MySQL, так как снижает требования к знаниям СУБД с вашей стороны. А можно вообще использовать его облачную версию: Google Cloud SQL
Скорее всего ваш mail-сервер очень быстро попадёт в спам, так как ранее (опять же, скорее всего) с его стороны не было таких крупных рассылок.
Я бы рекомендовал использовать сторонние сервисы, которые гарантированно помечены как безопасные у крупнейших поставщиков e-mail'ов (google, mail.ru, yandex, etc.)
Вам надо явно унаследовать в User метод get_amount_total:
super(Partnership, self).get_amount_total()
Так как это класс фреймворка, переписывать его некрасиво. Надо сделать через прокси-класс или миксин (выбирайте такой шаблон проектирования, который вам нравится больше).
Лучше всего рендерить подобные штуки не на стороне сервера, а на стороне клиента. Я использую для этого mathjax.
Тогда вы вводите формулы в привычном LaTeX формате в удобном для вас редакторе, будь то markdown или raw-текст (формочка в админке Django), а на клиенте (в браузере) всё отрисовывается. (Вот, например, как это выглядет: cherrypiethoughts.com/from-2-to-infinity.html )
Для начала почитать, что такое интерпретатор, как ставить либы и пакеты (см. ответ orgkhnargh), что такое virtualenv, написать проект в каком-то блокноте++ или sublime text 3, а потом открывать навороченные IDE типа PyCharm.
В зависимости от того, как Вы его ставили:
1. Если ставить python библиотеки при помощи pip или easy_install, то они попадут в /System/Library/Frameworks/Python.framework/Versions/…
2. Если ставить через port, то и интерпретатор и всего библиотеки попадают в /opt/local/Library/Frameworks/Python.framework/Versions…
3. Если собирать из исходников, то они попадут туда же, что и в первом случаи.