Я имею ту же загадку, как представлено в этом вопросе, но обратился к подлинному пользователю Django.
У меня есть эта модель прокси:
class OrderedUser(User):
def __unicode__(self):
return self.get_full_name()
class Meta:
proxy=True
ordering=["first_name", "last_name"]
И некоторые мои другие модели используют OrderedUser
вместо a django.contrib.auth.models.User
как типы поля.
В моих представлениях я затем использую request.user
для заполнения поля и - как ожидалось - получают ошибку:
'Cannot assign "": must be a "OrderedUser" instance'
Я мог просто сделать OrderedUser.objects.get(request.user.id)
, но это - дополнительный хит к базе данных.
Так, как преобразовать класс базовой модели в его проксированный класс?
Это еще одно попадание в базу данных, но это сработает:
OrderedUser.objects.get(pk=request.user.pk)
Изменить Вы можете попробовать:
o = OrderedUser()
o.__dict__ = request.user.__dict__