#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 я рад, что смог вам помочь. счастливого кодирования).