Как взять имя пользователя admin в html

Я стараюсь брать имя автора публикуемой статьи.

в модели

class Artigo(models.Model):
  autor = models.ForeignKey('auth.User', on_delete = models.CASCADE)
  titulo = models.CharField(max_length = 100)
  categoria = models.CharField(max_length = 20)
  conteudo = models.TextField()
  data_publicacao = models.DateTimeField(
    default = timezone.now
    )

def publicacao(self):
    self.data_publicacao = timezone.now()
    self.save()

def __str__(self):
    return self.titulo

с учетом

def noticias(request):
 artigos = Artigo.objects.filter(data_publicacao__lte = timezone.now()).order_by('data_publicacao')
return render(request, 'noticia/noticias.html', {'artigos':artigos})

в HTML

<h1>Noticias</h1>
{% for artigo in artigos %}
  <div>
    <h1><a href  = "">{{ artigo.titulo}} </a> </h1>
    <p>{{ artigo.conteudo }}</p>
    <p>Publicado em: {{ artigo.data_publicacao }}</p>
    <p>{{ artigo.autor.username }}</p>*
  </div>
{% endfor %}

этот {{ artigo.autor.username }} не работает. У меня ошибка: Значение исключения: неверный литерал для int() с базой 10: 'ElFrances'

Я не знаю, как взять имя автора или другие детали

Эта ошибка не исходит из этого кода. Пожалуйста, покажите полную трассировку.

Daniel Roseman 15.02.2019 15:55
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
1
41
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Вы пробовали использовать только artigo.autor?

проблема исчезает, но имя пользователя не появляется. Но танк за помощь!

Arnaud El Frances 17.02.2019 16:53
Ответ принят как подходящий

хорошо, я думаю, вы хотите использовать пользователей django, и это нормально, но вот некоторые детали

сначала посмотрите на модель, которую вам нужно импортировать:

from django.contrib.auth.models import User

тогда ты сделаешь это

class Artigo(models.Model):
autor = models.OneToOneField(User, on_delete=models.CASCADE)

скажи мне, если это работает для тебя

также делает * в

{{ artigo.autor.username }}

* is for something? perhaps try deleting it

Один автор может написать много статей, поэтому отношения между автором и статьями являются отношением один ко многим.

Muhammad Faizan Fareed 16.02.2019 18:35

Вы получаете ошибку из-за этой строки

autor = models.ForeignKey('auth.User', on_delete = models.CASCADE)

Вместо строки выше замените этой строкой

autor = models.ForeignKey(User, on_delete = models.CASCADE)

А также используйте select_related для производительности запросов, потому что, когда вы получаете информацию об авторе, вы снова попадаете в базу данных.

См. официальную документацию Django для select_related

Другие вопросы по теме