models.py:
class Person(models.Model):
name = models.CharField(max_length=200)
CATEGORY_CHOICES = (
('M', 'Male'),
('F', 'Female'),
)
gender = models.CharField(max_length=200, choices=CATEGORY_CHOICES)
to_be_listed = models.BooleanField(default=True)
description = models.CharField(max_length=20000, blank=True)
views.py:
def index(request):
latest_person_list2 = Person.objects.filter(to_be_listed=True)
return object_list(request, template_name='polls/schol.html',
queryset=latest_person_list, paginate_by=5)
Pada template, ketika saya menelepon person.gender
, saya mendapatkan 'M'
atau 'F'
bukannya 'Male'
atau 'Female'
.
Bagaimana cara menampilkan nilai ( 'Male'
atau 'Female'
) alih-alih kode ( 'M'
/ 'F'
)?
python
django
django-models
django-templates
Shankze
sumber
sumber
200
. Denganmax_lenght=1
cukup, akan membuat situs Anda lebih efisien dan Anda akan memastikan bahwa Anda tidak akan memiliki data yang salah. :)Jawaban:
Sepertinya Anda berada di jalur yang benar -
get_FOO_display()
pasti yang Anda inginkan:Di template , Anda tidak memasukkan
()
nama metode. Lakukan hal berikut:sumber
{{ person.get_gender_display() }}
Dalam Tampilan
Dalam Templat
Dokumentasi get_FOO_display ()
sumber
Orang lain telah menunjukkan bahwa metode get_FOO_display adalah yang Anda butuhkan. Saya menggunakan ini:
yang mengulangi semua pilihan yang dimiliki item tertentu sampai menemukan yang cocok dengan jenis item
sumber