Object attributes become strings if accessed by get first object in queryset

I got queryset, that have related set, but when I access this related set first object’s attibute by index.attribute_name it becomes string. If I do the same thing in a loop - this attribute maintain it’s type, sample below

  {% for p in periods %}
  {{ p.productions.0 }}
  BECOMES STRINGS accessed via .0.attr
  {{ p.productions.0.time }} str
  {{ p.productions.0.ammount }} str
  MANTAIN TYPES accessed in a loop
    {% for pp in p.productions %}
    {{ pp.ammount }} timedelta
    {{ pp.time }} decimal
    {% endfor %}
  {% endfor %}

Why it is like that?

it was my custom template filter, everything is working as it should