В общем, у меня образовался наиглупейший затык. Хочу выводить данные из CharField, у которого прописан choices из двух полей. Наверное, лучше было сделать BooleanField, но его отображение в админке не устроило, нужен был именно выбор из списка. И надо в зависимости от выбора сделать отображение в шаблоне.
Вот у меня есть таблица:
class Recommendation(models.Model):
date_of_rec = models.DateTimeField(auto_now_add=False, verbose_name="C")
date_of_rec_ex = models.DateTimeField(auto_now_add=False, verbose_name="По")
buy = "Покупать"
sell = "Продавать"
rec_choices = (
(buy, "Покупка"),
(sell, "Продажа")
)
rec = models.CharField(max_length=100, choices = rec_choices, default=buy, verbose_name="Сигнал")
def __str__(self):
return u'c %s по %s' % (self.date_of_rec, self.date_of_rec_ex)
Вот для нее вьюха(исключая лишнее):
def main (request):
rec = Recommendation.objects.all().order_by("-date_of_rec_ex")[:4]
return render(request, 'index.html', { 'rec':rec })
Я пробовал в шаблоне написать {% for i in rec %} {% if i.rec =="Покупать" %} Выводим див с одним классом {% else %} Выводим див с другим классом {% endif %} {% endfor %}.
Но такая конструкция не работает, потому что не распознается знак двойного равно. Есть ли какое-то типовое решение? Писал функцию во вью, по сути тот же иф -- элс из шаблона, только на нормальном питоне, назвал ее is_green и заставил возвращать тру или фолс. В шаблоне писал {% if i.is_gren %}, но, само собой, тоже не работало. Может это уже в шаблоне с помощью javascript делать надо? А он будет в качестве аргумента эту строку принимать? Или еще одно поле булево создать, которое не показывать в админке, а при выводе в шаблон как раз на него смотреть? Мне кажется, все это слишком тяжеловесно для такой плевой задачки.
Updated 9 April 2016, 19:06 by natanielkamirt.