Тег шаблона Django в блоке {% if %} не отображается

#python #django #web #django-templates

Вопрос:

Я делаю доску объявлений с помощью Джанго.

Как я могу выразить это с помощью нужных мне букв вместо номера типа? моя доска объявлений

HTML шаблон(board.html)

 {% for p in postlist %}  lt;trgt;  lt;tdgt;  {% if p.p_type == '1' %}  'cloud'  {% elif p.p_type == '2' %}  'wind'  {% endif %}  lt;/tdgt;  lt;/trgt; {% endfor %}  

выход

(ПУСТО)

ожидаемый

облачный ветер

Vies.py

 def board(request, p_type=None):  current_type = None  p_types = PostType.objects.all()  postlist = Post.objects.all()   page = request.GET.get('page', '1')  if p_type:  current_type = get_object_or_404(PostType, p_type=p_type)  postlist = postlist.filter(p_type=current_type)   paginator = Paginator(postlist, 10) # Showing 20 posts.  page_obj = paginator.get_page(page)   return render(request, 'board/board.html', {'current_type':current_type, 'p_types': p_types, 'postlist': page_obj})  

Model.py

 class PostType(models.Model): p_type = models.CharField(max_length=200, db_index=True)  def __str__(self):  return self.p_type  def get_ptype_url(self):  return reverse('board:board', args=[self.p_type])  

Комментарии:

1. Покажите нам свою модель PostType !

Ответ №1:

попробуй это.В django, когда вы создаете внешний ключ, он будет добавлен _id в него для базы данных, поэтому теперь в вашем шаблоне вы можете сравнить его, используя этот идентификатор ( p_type_id ), и вы должны быть уверены, что у облака pk=1, а у ветра pk=2.

 {% for p in postlist %}  lt;trgt;  lt;tdgt;  {% if p.p_type_id == 1 %}  'cloud'  {% elif p.p_type_id == 2 %}  'wind'  {% endif %}  lt;/tdgt;  lt;/trgt;  {% endfor %}  

Комментарии:

1. Большое вам спасибо за то, что рассказали мне! Ваш опыт выделяется.

2. Мне было действительно любопытно. Спасибо, что рассказали мне.

3. @stand0 я рад, что смог вам помочь. счастливого кодирования).