Пожалуйста, измените ваш аргумент представлений на «Показать все результаты для указанного поля», а затем в быстрой вкладке передайте соответствующий идентификатор термина.
Благодаря
getattr(f, field)
, если я понимаю Вас правильно (то есть, если Вы могли бы иметь field = "foo"
, и хочу f.foo
). В противном случае Вы могли бы хотеть разъясниться. Python имеет eval()
, и я не знаю что другие языки eval()
Вы хотите эквивалент.
Python, эквивалентный из eval()
eval()
x = 9
eval("x*2")
даст Вам 18.
v = "x"
eval(v+"*2")
работы также.
getattr( object, 'field' ) #note that field is a string
f = 'field_name'
#...
getattr( object, f )
#to get a list of fields in an object, you can use dir()
dir( object )
Для получения дополнительной информации см.: http://www.diveintopython.org/power_of_introspection/index.html
Не используйте оценку, даже если строки безопасны в данном случае! Просто не привыкните себя для него. Если Вы получаете строку от пользователя, это мог бы быть вредоносный код.
Закон Murphy's: если вещи могут пойти не так, как надо, они будут.
Для достигания списка всех полей в Python возражают, что можно получить доступ к __dict__
свойство.
class Testing():
def __init__(self):
self.name = "Joe"
self.age = 30
test = Testing()
print test.__dict__
результаты:
{'age': 30, 'name': 'Joe'}