2014-10-03 56 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

相关问题