Честно казано, ако тези неща са блокери за вас, не използвайте Django. Аз съм много силен привърженик на Django, но ако смятате, че не отговаря на нуждите ви, трябва да изберете нещо друго.
Трябва обаче да кажа, че това са странни неща, върху които да се фокусирате. Не мога да си представя защо едно допълнително поле за първичен ключ в междинна M2M таблица би било проблем изобщо. (Обърнете внимание обаче, че съставните полета - включително PKs - бяха обект на проект Summer of Code тази година и изглежда готови за сливане - вижте https://groups.google.com/forum/#!topic/django-developers/CD7OrkJ63zc )
И отново, защо липсата на настройки по подразбиране на ниво SQL "прави живота по-труден" е трудно да се разбере:ако правите всичко чрез ORM на Django, където се прилага по подразбиране няма разлика; Освен това, както каза Адриан в този билет, правенето на това в SQL всъщност би намалило текущата функционалност, като направи неща като извикваеми настройки по подразбиране невъзможни.
Също така трябва да помислите защо оставяте тези относително тривиални детайли да засенчат големите предимства, които Django ви дава:изразителен ORM, език на шаблоните, процъфтяваща общност, огромен брой приложения на трети страни... Но дори това казано отново вие сте свободни да изберете нещо друго, ако наистина не работи за вас.