Honestly, if those things are blockers for you, don't use Django. I am a very strong proponent of Django, but if you feel it doesn't meet your needs, you should go with something else.
I must say though that those are odd things to fixate on. I can't imagine why an extra primary key field on an intermediate M2M table would be a problem at all. (Note, however, that composite fields - including PKs - has been the subject of a Summer of Code project this year, and looks ready to merge - see https://groups.google.com/forum/#!topic/django-developers/CD7OrkJ63zc)
And again, why the lack of defaults at an SQL level "makes life harder" is hard to understand: if you're doing everything through Django's ORM, where the default is applied makes no difference; plus, as Adrian said on that ticket, doing it in SQL would actually reduce the current functionality by making things like callable defaults impossible.
Also you should reflect on why you're letting these relatively trivial details overshadow the great benefits that Django gives you: expressive ORM, template language, thriving community, huge numbers of third-party apps... But, even that said, once again you're free to choose something else if it really doesn't work for you.