programing

장고: 선택지 값 표시

copyandpastes 2023. 1. 22. 22:50
반응형

장고: 선택지 값 표시

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)

템플릿에서, 내가 전화했을 때person.gender, 나는 이해하다'M'또는'F'대신'Male'또는'Female'.

값을 표시하는 방법('Male'또는'Female'코드 대신 ( )를 사용합니다.'M'/'F')?

올바른 방향으로 나아가고 있는 것 같습니다.당신이 원하는 것은 다음과 같습니다.

템플릿에는 다음 항목이 포함되지 않습니다.()방법이라는 이름으로다음을 수행합니다.

{{ person.get_gender_display }}

선택지가 설정된 모든 필드에 대해 오브젝트에는 get_이 있습니다.FOO_display() 메서드. FOO는 필드 이름입니다.이 메서드는 필드의 "사람이 읽을 수 있는" 값을 반환합니다.

뷰 내

person = Person.objects.filter(to_be_listed=True)
context['gender'] = person.get_gender_display()

템플릿 내

{{ person.get_gender_display }}

get_에 관한 문서FOO_display()

다른 사람들은 '취득'이 있다고 지적했습니다.FOO_display 방식이 필요합니다.이것을 사용하고 있습니다.

def get_type(self):
    return [i[1] for i in Item._meta.get_field('type').choices if i[0] == self.type][0]

항목 유형과 일치하는 항목을 찾을 때까지 특정 항목이 가진 모든 선택 항목에서 반복됩니다.

언급URL : https://stackoverflow.com/questions/4320679/django-display-choice-value

반응형