2014-10-03 90 views
1

我的問題的關鍵是以下幾點。我有一個領域,它繼承了Selet2場Django的形式:不同的用戶獲得相同的搜索結果

class Select2ModelField(MyBaseSelect2ModelField, AutoModelSelect2Field): 
    ''' 
    Select2ModelField, that uses ajax to get autocomplete options. 
    Should be used by default. 
    ''' 
    widget = Select2ChoiceWidget 

class LimitedDepartmentChoiceField(Select2ModelField): 
    def __init__(self, *args, **kwargs): 
     super(LimitedDepartmentChoiceField, self).__init__(*args, **kwargs) 

然後,我用它在我的形式,在views.py創建這個領域,因爲這個領域的內容依賴於請求數據:

form = RepresentativeCreateEditForm(request.POST) 
form.fields['department'] = LimitedDepartmentChoiceField(label=u'Department', 
                queryset=Department.objects.filter(
                  id__in=all_deps_ids)) 

的問題是,當兩個不同的用戶在同一時間進入這個頁面,它們都具有的選項相同的列表,正是其中一個用戶,誰第一個加載頁面,有。而這種行爲是不正確的,他們應該有不同的選項列表。

請問誰能告訴我如何解決這個問題?

回答

0

這聽起來像一個值被設置爲一個類屬性(某個地方,你的一個類),而不是作爲一個類的特定實例的屬性。有很多繼承正在進行,因此您可能需要進行一些挖掘才能確切地確定問題所在。我的猜測是這是Select2ChoiceWidget類。

從你的代碼示例,它看起來像所有實例的Select2ModelField及其子類相互之間共享Select2ChoiceWidget類。我會認爲這將是問題的原因。

我不知道你正在使用的Django類的很多,但也許嘗試沿着這些線?

class Select2ModelField(MyBaseSelect2ModelField, AutoModelSelect2Field): 
    ''' 
    Select2ModelField, that uses ajax to get autocomplete options. 
    Should be used by default. 
    ''' 
    def __init__(self, *args, **kwargs): 
     # Not sure if this is the proper way to instantiate this class, 
     # but doing so would help avoid leaking data across the instances 
     # of Select2ModelField and its subclasses. 
     self.widget = Select2ChoiceWidget() 
     # Do the parent class(es) for good measure. 
     super(Select2ModelField, self).__init__(self, *args, **kwargs) 
+0

不幸的是,這並沒有幫助。錯誤是: 類型錯誤: 'Select2ChoiceWidget' 對象不是可調用 '類Select2ChoiceWidget(MySelect2BaseWidget,AutoHeavySelect2Widget): pass' 這裏: '類MySelect2BaseWidget(對象): #there去了很多的實現代碼' – Vladimir 2014-10-03 13:11:41

+0

那麼也許只用'self.widget = Select2ChoiceWidget'來試試吧?它看起來像'Select2ChoiceWidget'已經是一個東西的實例,而不是一個類。 – 2014-10-03 13:47:33

+0

好吧,也沒有工作。(也許,解決方案不是在Django的某個地方,但在某些地方在選擇2包參數? – Vladimir 2014-10-03 15:13:50

相關問題