Как сохранить kwargs между звонками CBV - PullRequest
1 голос
/ 10 февраля 2020

У меня есть экран подробностей, где вы перенаправлены на экран «загрузки» с выбранным значением pk. Кроме того, сам экран загрузки может работать без kwargs, и в этом случае (в отсутствие pk) он подберет / создаст временную запись для каждого пользователя и продолжит ее использовать.

Однако, когда я перенаправлю на " «загрузить» экран с ПК, значение исчезает во время загрузки нескольких файлов

def get_context_data(self, **kwargs):
    context = super(UploadImages, self).get_context_data(**kwargs)

    if "pk" in self.kwargs:
        context.update({'taid':self.kwargs['pk']})
    elif context.get("taid") is None:
        context.update({'taid':self._get_usr_tmp_album()})

    return context

При загрузке файлов, form_valid вызывается для файла, который, в свою очередь, get_context_data вызывается каждый раз. Когда это происходит, self.kwargs возвращает пустое значение (несмотря на то, что идентификатор указан в URL), и, следовательно, код переходит к созданию / чтению временной записи для этого пользователя и возвращает ее.

def form_valid(self,form):
    context = self.get_context_data(form=form)

    if self.request.is_ajax():
        album_id = context['taid']

URL:

http://localhost:8000/images/complete-upload/61/

Есть ли способ получить тот же идентификатор из URL в течение жизненного цикла CBV? Я попробовал сессию, и она полностью оказалась в разных вопросах.

...