在Django模型的模板中显示键/值对

时间:2020-06-09 19:33:56

标签: python html django django-models django-templates

很抱歉,问题本身令人困惑。我有一个带有两个列表的模型,这些列表用作下拉列表供用户选择。一切正常,除了查看数据时,它只在我希望它显示值时显示键。

models.py

class RestroomReview(models.Model):
    MEN = 'M'
    WOMEN = 'W'
    UNISEX = 'U'
    FAMILY = 'F'
    RESTROOM_TYPE_CHOICES = [
        ('M', 'Men'),
        ('W', 'Women'),
        ('U', 'Unisex'),
        ('F', 'Family')
    ]
    RATING_CHOICES = [
        (1, 'Poor'),
        (2, 'Average'),
        (3, 'Good'),
        (4, 'Very Good'),
        (5, 'Excellent')
    ]
    venue = models.ForeignKey(Venue, blank=False, on_delete=models.CASCADE)
    user = models.ForeignKey('auth.User', blank=False, on_delete=models.CASCADE)
    public = models.BooleanField(blank=False)
    rest_type = models.CharField(
        max_length=1, 
        choices=RESTROOM_TYPE_CHOICES, 
        default=MEN
    )
    baby = models.BooleanField('Changing Table')
    needle = models.BooleanField('Sharps Container')
    handicap = models.BooleanField('Handicap Accessible')
    rating = models.IntegerField(choices=RATING_CHOICES, default=1)
    title = models.CharField(max_length=200, blank=False)
    comment = models.TextField(max_length=1000, blank=False)
    posted_date = models.DateTimeField(blank=False)

review_detail.html

{% extends 'restroom_rater/base.html' %}
{% block content %}

<div>
    <h3>{{ review.venue.name }}</h3>

    <p>Title: {{ review.title}}</p>
    <p>by {{ review.user }}</p>
    <p>Public: {{ review.public }}</p>
    <p>Type: {{ review.rest_type }}</p>
    <p>Changing Table: {{ review.baby }}</p>
    <p>Sharps Container: {{ review.needle }}</p>
    <p>Handicap Accessible: {{ review.handicap }}</p>
    <p>Rating: {{ review.rating }}</p>
    <p>Comment: {{ review.comment }}</p>
    <p>Date Posted: {{ review.posted_date }}</p>

</div>

{% endblock %}

因此,在我的review_detail模板中,我希望它说“男人”,“妇女”,“男女皆宜”或“家庭”,但改为显示“ M”,“ W”,“ U”,“ F”。与评级相同。我希望它显示“差”,“好”等,但它会给出数字等级。

1 个答案:

答案 0 :(得分:0)

我认为您正在寻找

{{ review.get_rest_type_display }}

通常get_FIELDNAME_display()将为您提供显示值。

相关问题