Не загружаются данные в форму с первого раза

Всем доброго времени суток.
Проблема такая: у меня есть несколько одинаковых форм с разными initial. И при открытии этой странички, только у первой формы отсутствует initial(то есть все ее поля пустые). А при повторном открытии странички, у всех форм есть initial,и все работает корректно.
Схема работы такая: path -> CheckEditForm -> EditForm
Views.py:

class CheckEditForm(TemplateView):
    # если пользователь авторизован, то показывать ему форму, иначе отправлять его на авторизацию
    def dispatch(self, request, *args, **kwargs):
        if request.user.is_authenticated:
            # return self.get(request)
            return EditForm.as_view
        else:
            return redirect("LoginForm")


class EditForm(ListView, FormView):
    model = Marker
    template_name = 'map/edit.html'
    form_class = MarkerForm

    def get_queryset(self):
        # делаю словарь типа {' имя пользователя': ['все его формы'...]}
        objects = {}
        user = self.request.user
        # user = authenticate(username=data['username'], password=data['password'])

        markers = Marker.objects.filter(who=user.pk)
        objects[user.username] = []

        for marker in markers:
            f = self.get_form(MarkerForm) #ошибка????
            for key in f.declared_fields.keys():
                f.declared_fields[key].initial = getattr(marker, key) присваиваю форме начальные значения
                print(f.declared_fields[key].initial)
            objects[user.username].append(f)



        return objects.items()

forms.py

class MarkerForm(forms.Form):


    longitude = forms.FloatField()
    latitude = forms.FloatField()
    location = forms.CharField(max_length=80)
    type = forms.ChoiceField(choices=Marker.TYPE)
    status = forms.BooleanField()
    date_of_update = forms.DateTimeField()

html template

{% extends 'map/base.html' %}
{% block body %}
<ul>
    <!-- Iterate over object_list -->
    {% for key, values in object_list %}
    <!-- Display Objects -->
    <h1>{{ key }}</h1>
    {% for value in values %}
    <form action="POST">
        {{ value.as_p }}
        <input type="submit" value="Save">
    </form>


    <hr/>

    {% endfor %}

    <!-- If object_list is empty  -->
    {% empty %}
    <li>No objects yet.</li>
    {% endfor %}
</ul>
{% endblock %}

Пробовал переделать класс при помощи этого вопроса. Но результат одинаковый. Я думаю, все дело в неправильном создании экземпляров класса MarkerForm. (Строку пометил)

Я так и не понял, с чем это связано, но проблему решил. Я просто перенес присвоение initial в init формы. Вот так получилось:
views

class EditForm(ListView, FormView):
    model = Marker
    template_name = 'map/edit.html'
    form_class = MarkerForm

    def get_queryset(self):
        objects = {}
        user = self.request.user
        # user = authenticate(username=data['username'], password=data['password'])

        markers = Marker.objects.filter(who=user.pk)
        objects[user.username] = []

        for marker in markers:
            data = {}

            for key in MarkerForm.declared_fields.keys():
                data[key] = getattr(marker, key)

            f = MarkerForm(initials=data)
            objects[user.username].append(f)

forms

class MarkerForm(forms.Form):
    def __init__(self, *args, **kwargs):
        if kwargs.get('initials'):
            for key in self.declared_fields.keys():
                self.declared_fields[key].initial = kwargs['initials'][key]
            del kwargs['initials']
        super(MarkerForm, self).__init__(*args, **kwargs)



    longitude = forms.FloatField()
    latitude = forms.FloatField()
    location = forms.CharField(max_length=80)
    type = forms.ChoiceField(choices=Marker.TYPE)
    status = forms.BooleanField()
    date_of_update = forms.DateTimeField()

Вопрос не закрыт, т.к. причина возникновения проблемы неизвестна. Жду ваших предположений по этому вопросу.

Вернуться на верх