Вы делаете много смелых заявлений, таких как «много вещей сломано из-за того, как оно реализовано» и «подклассы очень и очень далеки от завершения», не могли бы вы остановиться на них подробнее? Как автор django-ldapdb, я бы приветствовал ваши предложения относительно того, что вы хотели бы изменить / исправить, для этого предназначен список рассылки django-ldapdb!
К вашему сведению, я выбрал подход к созданию подкласса класса Model, потому что обычно вам нужно иметь только пару моделей, использующих бэкэнд LDAP, а не все модели в вашем приложении, и django 1.1 не поддерживает несколько баз данных. Кроме того, LDAP сильно отличается от существующих бэкэндов SQL:
- не является реляционной базой данных
- это не "плоский", это древовидное
- истинный «первичный ключ» для записи - это отличительное имя (DN), которое не является фактическим полем, а значением, вычисленным из других полей
- поля могут быть многозначными
По всем этим причинам у меня есть серьезные сомнения относительно того, чего можно достичь, написав настоящий бэкэнд LDAP. Я думаю, что у вас всегда будут некоторые специфические особенности LDAP, и модель подклассов позволяет это сделать.