Как преобразовать request.user в подлинный пользовательский класс прокси?

Я имею ту же загадку, как представлено в этом вопросе, но обратился к подлинному пользователю 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), но это - дополнительный хит к базе данных.

Так, как преобразовать класс базовой модели в его проксированный класс?

17
задан Community 23 May 2017 в 12:01
поделиться

1 ответ

Это еще одно попадание в базу данных, но это сработает:

OrderedUser.objects.get(pk=request.user.pk)

Изменить Вы можете попробовать:

o = OrderedUser()
o.__dict__ = request.user.__dict__
16
ответ дан 30 November 2019 в 12:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: