__str__ не показывает строку - PullRequest
0 голосов
/ 29 апреля 2020

Я пишу приложение Django и при входе в систему я хочу, чтобы оно отображало имя и фамилию пользователя. Это моя модель -

class Admins(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    user.is_admin = True
    first_name = models.CharField(max_length=256)
    last_name = models.CharField(max_length=256)

    def __str__(self):
        return "{} {}".format(self.first_name, self.last_name)

Когда я вызываю функцию str в моем views.py, она возвращает - "Функция Admins. str at 0x00000135A3083708 "

Вот мое мнение -

def AdminLandingPage(request):
    name = Admins.__str__
    print(name) #using this part to display above mentioned error
    return render(request,'form1/adminlanding.html',{'USTYPE':"ADMIN","FN":name})

Когда я проверил свой файл HTML, он оказался пустым. Предполагалось отобразить имя и фамилию. Вместо этого ни строка (имя), ни контекст не могут показать это.

Вот мой HTML файл -

<body>
<p>

{{FN}}
</p>

1 Ответ

2 голосов
/ 29 апреля 2020

Прежде всего, чтобы получить результат функции, вам нужно выполнить __str__() (вам не хватает ()).

Второй:

В настоящее время ваш Переменная name - это просто определение Admins -Model, а не экземпляр.

Чтобы получить имя текущего пользователя, необходимо получить для него экземпляр модели, например:

def AdminLandingPage(request):
    user = request.user
    admin = user.admins  # get your Admins-instance with reverse-relation from User-object
    name = str(admin)
    print(name)  # will print aus the result of Admins.__str__() for the given instance
    return render(request, 'form1/adminlanding.html', {'USTYPE': 'ADMIN', 'FN': name})
...