Уведомления

Группа в Telegram: @pythonsu

#1 Март 10, 2015 18:09:46

Rebra4
Зарегистрирован: 2012-06-30
Сообщения: 132
Репутация: +  0  -
Профиль   Отправить e-mail  

eval()

Разумно использовать подобный код?

##########################################################################################
#Доступные языки перевода
def list_lang(request,id):
	b=[]
	a=Knowledge.objects.get(id=id)
	for v,c in settings.LANGUAGES:
		m="a.name_post_"+v
		k=eval(m)
		b.append(k)
	return render_to_response('list_lang.html', {'text':b}, RequestContext(request))
##########################################################################################

Офлайн

#2 Март 10, 2015 18:27:50

botinag
Зарегистрирован: 2014-02-20
Сообщения: 179
Репутация: +  35  -
Профиль   Отправить e-mail  

eval()

нет. не разумно.
посмотрите в сторону getattr

a=Knowledge.objects.get(id=id)
l = [u'_'.join(['name_post', x]) for x in settings.LANGUAGES]
text = [getattr(a, x) for x in l]
а если “name_post_”+v существует как поле в БД, то лучше наверное так:
l = [u'_'.join(['name_post', x]) for x in settings.LANGUAGES]
text = Knowledge.objects.filter(id=id).values_list(*l)[0]

Офлайн

#3 Март 10, 2015 19:47:52

Rebra4
Зарегистрирован: 2012-06-30
Сообщения: 132
Репутация: +  0  -
Профиль   Отправить e-mail  

eval()

Спасибо.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version