Я новичок в Django и Python, и недавно натолкнулся на ряд методов в Django docs, таких как Model.get_FOO_display ().Страница справки говорит, что вы можете заменить FOO на имя поля.Я пытался выяснить, как это возможно в Python, и изучил класс «Модель».Там я наткнулся на это:
def _get_FIELD_display(self, field):
value = getattr(self, field.attname)
return force_unicode(dict(field.flatchoices).get(value, value), strings_only=True)
Я не могу понять, как в Python можно: 1) написать это
class Person(models.Model):
gender = models.CharField(max_length=1, choices=GENDER_CHOICES)
p = Person(name='John', gender='M')
p.get_gender_display()
Итак, как Python «меняет» ПОЛЕ(или FOO) в пол?Это что-то вроде злой нотации Python?(Извините, я не могу спросить более четко) Можете ли вы указать на какую-нибудь справочную страницу Python?
2) почему источник из класса Model объявляет _get_FIELD_display () с начальным подчеркиванием, а Python doc извлекает из приведенного вышепишет "p.get_gender_display ()" без подчеркивания?Опять же, не могли бы вы дать справочную страницу Python для этого?