Это невозможно, если не абстрактно, и вот почему: LongNamedRestaurantтакже является a Place, не только как класс, но и в базе данных. Таблица мест содержит запись для каждого чистого Placeи для каждого LongNamedRestaurant. LongNamedRestaurantпросто создает дополнительную таблицу с символом food_typeи ссылкой на таблицу мест.
Если вы это сделаете Place.objects.all(), вы также получите каждое место, которое является a LongNamedRestaurant, и оно будет экземпляром Place(без food_type). Таким образом, они используют один Place.nameи LongNamedRestaurant.nameтот же столбец базы данных и, следовательно, должны быть одного типа.
Я думаю, это имеет смысл для обычных моделей: каждый ресторан - это место, и в нем должно быть по крайней мере все, что есть в нем. Возможно, эта согласованность также является причиной того, что абстрактные модели были невозможны до 1.10, хотя это не создавало проблем с базой данных. Как отмечает @lampslave, это стало возможным в 1.10. Я лично рекомендую соблюдать осторожность: если Sub.x переопределяет Super.x, убедитесь, что Sub.x является подклассом Super.x, иначе Sub не может использоваться вместо Super.
Обходные пути : вы можете создать собственную модель пользователя ( AUTH_USER_MODEL), которая включает в себя довольно много дублирования кода, если вам нужно только изменить поле электронной почты. В качестве альтернативы вы можете оставить электронное письмо как есть и убедиться, что оно требуется во всех формах. Это не гарантирует целостность базы данных, если ее используют другие приложения, и не работает наоборот (если вы хотите, чтобы имя пользователя не требовалось).