Поскольку ответ на этот вопрос не был предоставлен, я решил, что должен осветить, как я решил эту проблему на тот случай, если кто-то другой может найти эту информацию полезной.
В конце концов я решил эту проблему, определив пользовательское промежуточное ПО и использовав ThreadLocals
.
Сначала определите класс ThreadLocals в вашем forms.py
, как показано ниже
import threading
_thread_locals = threading.local()
class ThreadLocals(object):
"""
Middleware that gets various objects from the
request object and saves them in thread local storage.
"""
def process_request(self, request):
_thread_locals.request = request
Тогда в вашем settings.py
обязательно включите промежуточное ПО
MIDDLEWARE_CLASSES = (
'myproject.myapp.forms.ThreadLocals',
)
И, наконец, получить доступ к объекту запроса так же просто, как и
class GroupForm(forms.ModelForm):
class Meta:
model = Group
def clean(self):
cleaned_data = super(GroupForm, self).clean()
self.request = _thread_locals.request