python django自动完成指示灯无序对象列表警告

python django自动完成指示灯无序对象列表警告,django,django-autocomplete-light,Django,Django Autocomplete Light,我最近一直在使用Django制作网站,在实现链式下拉/依赖式下拉时遇到了困难。我尝试了智能选择,但无法实现它,这时我遇到了django autocomplete light class DriverAutocomplete(autocomplete.Select2QuerySetView): def get_queryset(self): if not self.request.user.is_authenticated(): return Dr

我最近一直在使用Django制作网站,在实现链式下拉/依赖式下拉时遇到了困难。我尝试了智能选择,但无法实现它,这时我遇到了django autocomplete light

class DriverAutocomplete(autocomplete.Select2QuerySetView):
    def get_queryset(self):

        if not self.request.user.is_authenticated():
            return Driver.objects.none()

        qs = Driver.objects.all()
        hauler = self.forwarded.get('hauler', None)

        if hauler:
            qs = qs.filter(hauler=hauler)
        if self.q:
            qs = qs.filter(name__istartswith=self.q)

        return qs
我能够实现这一点,并且它符合我当前的需求,但是,我注意到python发出了以下警告:

UnorderedObjectListWarning: Pagination may yield inconsistent results
with an unordered object_list: <class 'project.models.Driver'> QuerySet.
class DriverAutocomplete(autocomplete.Select2QuerySetView):
    def get_queryset(self):

        if not self.request.user.is_authenticated():
            return Driver.objects.none()

        qs = Driver.objects.all()
        hauler = self.forwarded.get('hauler', None)

        if hauler:
            qs = qs.filter(hauler=hauler)
        if self.q:
            qs = qs.filter(name__istartswith=self.q)

        return qs
url.py

class TripModelForm(forms.ModelForm):

    driver = forms.ModelChoiceField(
        queryset=Driver.objects.all(),
        widget=autocomplete.ModelSelect2(url='driver_autocomplete',
                                         forward=['hauler'])
    )

    class Meta:
        model = Trip
        fields = ['ticket', 'date_issued', 'department', 'hauler', 'plate_number', 'driver',]
urlpatterns += [
    path('driver-autocomplete/', views.DriverAutocomplete.as_view(), name='driver_autocomplete'),
]
class DriverAutocomplete(autocomplete.Select2QuerySetView):
    def get_queryset(self):

        if not self.request.user.is_authenticated():
            return Driver.objects.none()

        qs = Driver.objects.all()
        hauler = self.forwarded.get('hauler', None)

        if hauler:
            qs = qs.filter(hauler=hauler)
        if self.q:
            qs = qs.filter(name__istartswith=self.q)

        return qs
class DriverAutocomplete(autocomplete.Select2QuerySetView):
    def get_queryset(self):

        if not self.request.user.is_authenticated():
        return Driver.objects.none()

        qs = Driver.objects.all().order_by('name') <-- here
        if self.q:
        hauler = self.forwarded.get('hauler', None)

        if hauler:
            qs = qs.filter(hauler=hauler)
        if self.q:
            qs = qs.filter(name__istartswith=self.q)

        return qs
视图.py

class DriverAutocomplete(autocomplete.Select2QuerySetView):
    def get_queryset(self):

        if not self.request.user.is_authenticated():
            return Driver.objects.none()

        qs = Driver.objects.all()
        hauler = self.forwarded.get('hauler', None)

        if hauler:
            qs = qs.filter(hauler=hauler)
        if self.q:
            qs = qs.filter(name__istartswith=self.q)

        return qs

我跟踪了错误的来源,它位于\python36\lib\site packages\django\views\generic\list.py:88中。看起来类需要有序的queryset,因此我将views.py修改为:

class DriverAutocomplete(autocomplete.Select2QuerySetView):
    def get_queryset(self):

        if not self.request.user.is_authenticated():
            return Driver.objects.none()

        qs = Driver.objects.all()
        hauler = self.forwarded.get('hauler', None)

        if hauler:
            qs = qs.filter(hauler=hauler)
        if self.q:
            qs = qs.filter(name__istartswith=self.q)

        return qs
视图.py

class TripModelForm(forms.ModelForm):

    driver = forms.ModelChoiceField(
        queryset=Driver.objects.all(),
        widget=autocomplete.ModelSelect2(url='driver_autocomplete',
                                         forward=['hauler'])
    )

    class Meta:
        model = Trip
        fields = ['ticket', 'date_issued', 'department', 'hauler', 'plate_number', 'driver',]
urlpatterns += [
    path('driver-autocomplete/', views.DriverAutocomplete.as_view(), name='driver_autocomplete'),
]
class DriverAutocomplete(autocomplete.Select2QuerySetView):
    def get_queryset(self):

        if not self.request.user.is_authenticated():
            return Driver.objects.none()

        qs = Driver.objects.all()
        hauler = self.forwarded.get('hauler', None)

        if hauler:
            qs = qs.filter(hauler=hauler)
        if self.q:
            qs = qs.filter(name__istartswith=self.q)

        return qs
class DriverAutocomplete(autocomplete.Select2QuerySetView):
    def get_queryset(self):

        if not self.request.user.is_authenticated():
        return Driver.objects.none()

        qs = Driver.objects.all().order_by('name') <-- here
        if self.q:
        hauler = self.forwarded.get('hauler', None)

        if hauler:
            qs = qs.filter(hauler=hauler)
        if self.q:
            qs = qs.filter(name__istartswith=self.q)

        return qs
类驱动程序自动完成(自动完成。选择2QuerySetView):
def get_queryset(自我):
如果不是self.request.user.is_authenticated():
返回Driver.objects.none()
qs=Driver.objects.all().order_by('name'))