반응형
점 구문 대신 문자열을 사용하여 Django 모델의 필드에 액세스 하시겠습니까?
Django에서는 다음과 같이 할 수 있습니다.
test = Test.objects.get(id=1)
test.name
다음과 같이 동적으로 생성 된 문자열을 사용하여 속성에 액세스 할 수 있기를 원합니다.
test['name']
또는 문자열을 사용하는 다른 구문. 나는 시도했다
test._meta.get_field_by_name('name')
그러나 이것은 값이 아닌 필드 자체를 반환합니다.
어떤 아이디어?
파이썬의 내장 getattr()
함수를 사용할 수 있습니다 .
getattr(test, 'name')
이름 이 인스턴스 테스트 의 속성 이라고 가정하면 getattr(test, 'name')
해당 값을 반환해야합니다. 또는 test.__dict__['name']
.
getattr()
여기에서 더 많은 것을 읽을 수 있습니다 : http://effbot.org/zone/python-getattr.htm
다른 답변은 여전히 유효하지만 이제 Django의 _meta.get_field ()를 사용하여이를 수행 할 수 있습니다.
test._meta.get_field('name')
Model _meta API는 1.8 부터 공식 지원 및 문서화 를 시작 했지만 공식 문서화 이전에 이전 버전에서 배포 및 사용되었습니다.
Python에서는 일반적으로 dict 메서드 가있는 객체 내의 값에 액세스 할 수 있습니다 .
이 수업이 있다고 가정 해 보겠습니다.
class Dog(object):
def __init___(self, color):
self.color = color
그런 다음 인스턴스화합니다.
dog = Dog('brown')
따라서 다음을 수행하여 색상을 볼 수 있습니다.
print dog.color
다음을 수행하여 색상을 볼 수도 있습니다.
print dog.__dict__['color']
색상을 설정할 수 있습니다.
print dog.__dict__['color'] = 'green'
print dog.color
>>>green
반응형
'program tip' 카테고리의 다른 글
어떤 Linux IPC 기술을 사용해야합니까? (0) | 2020.11.11 |
---|---|
VS2010 프로젝트에 파일을 포함하여 빌드 또는 게시 중에 자동으로 빌드 출력 디렉토리에 복사하는 방법 (0) | 2020.11.11 |
Laravel Eloquent-한 줄 가져 오기 (0) | 2020.11.10 |
TensorFlow로 개별 작업의 실행 시간을 측정 할 수 있습니까? (0) | 2020.11.10 |
존재하지 않는 MySQL 가입 (0) | 2020.11.10 |