Получите имя пользователя из модели django - PullRequest
0 голосов
/ 13 июля 2020

Не совсем уверен, есть ли повторяющийся вопрос, возможно, но я не могу его найти

У меня здесь есть этот код ( models.py )

# Create your models here.
class UserProfileInfo(models.Model):
    # Create relationship (don't inherit from User!)
    user = models.OneToOneField(User, on_delete=models.CASCADE)

    # Add any additional attributes you want
    can_view_all = models.BooleanField(default=True)
    can_edit_all = models.BooleanField(default=False)

    can_add_admin = models.BooleanField(default=False)
    alias = models.CharField(default='none')

    @property
    def alias(self):
        return models.CharField(default=self.user.username)

    def __str__(self):
        # Built-in attribute of django.contrib.auth.models.User !
        return self.user.username

    @alias.setter
    def alias(self, value):
        self._alias = value

Как видите, я пытаюсь получить имя пользователя с помощью свойства alias, но это не работает, может ли кто-нибудь мне помочь? В принципе, я хотел бы иметь возможность редактировать логические поля позже (я могу это сделать), но я не знаю, какого пользователя я редактирую, есть ли способ получить имя пользователя напрямую с помощью инъекции HTML, что было бы еще лучше, но мне просто нужен способ показать, какой пользователь Я редактирую

Кстати, это не всегда тот же пользователь, под которым я вошел, поэтому я не могу просто использовать пользователя

Спасибо

Изменить: Views.py

@method_decorator(login_required, name='dispatch')
class UserUpdateView(UpdateView):
    context_object_name = 'userprofileinfo'
    fields = ('can_view_all', 'can_edit_all', 'can_add_admin')
    model = models.UserProfileInfo

1 Ответ

1 голос
/ 13 июля 2020

В Django для ссылки на поле в объекте внешнего ключа необходимо использовать синтаксис двойного подчеркивания, например: user__username

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...