2011-06-13 88 views
0

我想知道如何在創建ModelChoiceField的 查詢集時訪問用戶的配置文件。我想是能夠使用 ModelChoiceField顯示基於保存在用戶配置文件 參數另一臺接觸即Django ModelChoiceField使用user.get_profile()的自定義查詢

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

是否有更好的方法來做到這一點(超越了一個ajax選擇器 template)?

格雷格

回答

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) 

或者空單

form = InspectionRequestForm(request=request) 

感謝丹尼爾·羅斯曼對於前答案。

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

相關問題