2011-06-13 1 views
0

Мне интересно, как получить доступ к профилю пользователя при создании запроса на выбор для ModelChoiceField. Я хотел бы иметь возможность использовать ModelChoiceField для отображения контактов из другой таблицы на основе параметр сохраняется в профиле пользователя естьПользовательский запрос для Django ModelChoiceField с использованием user.get_profile()

who = forms.ModelChoiceField(queryset=Contacts.objects.filter(id__exact=request.user.get_profile().main_company)) 

Есть ли лучший способ сделать это (за пределами АЯКСА подборщика в шаблон)?

Грег

ответ

2

Для тех, интересно, я был в состоянии придумать решение из следующих SO обсуждения:

How do I access the request object or any other variable in a form's clean() method?

Django: accessing the model instance from within ModelAdmin?

class InspectionRequestForm(ModelForm): 
    .... 
    def __init__(self, *args, **kwargs): 
      self.request = kwargs.pop('request', None) 
      super(InspectionRequestForm, self).__init__(*args, **kwargs) 
      companyid = self.request.user.get_profile().main_contactnum.clientid.idflcustomernum 
      self.fields['who'].queryset = Contacts.objects.filter(clientid__exact=companyid) 

Мой Вид:

Сохранить форму (Не так, как необходимо включить запрос = запрос здесь, но только в том случае)

form = InspectionRequestForm(request.POST, request=request) 

Или Empty Форма

form = InspectionRequestForm(request=request) 

Благодаря Daniel Роземан для обоих предыдущих ответов.

https://stackoverflow.com/users/104349/daniel-roseman