Можно ли в Django использовать переменную, переданную в функцию, для доступа к атрибуту модели?
Я пытаюсь создать пользовательскую функцию, в которой одной из передаваемых переменных является имя атрибута модели. Я делаю это, чтобы попытаться получить доступ к базовому значению.
def tabsums(entity_object, year_object, columntitle):
curassetobject = BSAccountType.objects.get(name = "Current asset", company = entity_object)
curassetsum = BSSum.objects.get(Q(company = entity_object) & Q(year = year_object) & Q(account_type = curassetobject)).columntitle
По сути, я хочу, чтобы columntitle был строкой, соответствующей имени поля модели, поэтому я пытаюсь передать переменную в качестве имени атрибута для доступа к базовому значению. Это не работает, так как Django/python ищет атрибут "columntitle", которого не существует, вместо того, чтобы обратиться к базовой строке.
Есть ли синтаксис, который я могу использовать, который позволит Django использовать базовое строковое значение, которое передается?
Большое спасибо.
Я не тестировал это, но Django - это, по сути, просто python, поэтому вы должны быть в состоянии использовать функцию getattr() для того, чтобы сделать то, что вы хотите. Что-то вроде этого:
def tabsums(entity_object, year_object, columntitle):
curassetobject = BSAccountType.objects.get(name = "Current asset", company = entity_object)
curassetsum = getattr(BSSum.objects.get(Q(company = entity_object) & Q(year = year_object) & Q(account_type = curassetobject)), columntitle)