NameError:name' django_filters'没有定义

时间:2018-03-15 21:44:28

标签: django database python-3.x postgresql django-filter

我正在尝试使用Django包:Django Filter 我通过Pip安装它,确保我运行支持的Python(3.6)版本和Django(2.0),但每当我尝试运行我的应用程序时,我都会收到以下错误:

class Table1(models.Model, django_filters.FilterSet):
NameError: name 'django_filters' is not defined

这是我的代码示例,更改了名称以保护我的工作。

models.py:

from django.db import models
from django.contrib.postgres.search import SearchVectorField, SearchQuery
from django_filters import FilterSet



class Table1(models.Model, django_filters.FilterSet):
    field1 = models.IntegerField(db_column='field1', blank=True, null=True)  
    field2 = models.NullBooleanField(db_column='field2')  
    field3= models.IntegerField(db_column='field3', blank=True, null=True)  
    field4= models.TextField(db_column='field4', blank=True, null=False, primary_key=True)  

    #def __str__(self):
     #   return self.sid

    class Meta:
       managed = False
       db_table = 'Table1'
       unique_together = (('field1', 'field2', 'field3', 'field4'),)

filters.py:

from .models import Table1
import django_filters

class Table1Filter(django_filters.FilterSet):
    class Meta:
        model = Table1
        fields = ['field1', 'field2', 'field3', 'field4']

views.py:

from django.shortcuts import render 
from django_tables2 import RequestConfig
from django_tables2.export.export import TableExport
from django.contrib.postgres.search import SearchQuery, SearchRank
from django.template import RequestContext
from django.views.generic import *

from .models import *
from .tables import *
from .forms  import *
from .filters import Table1Filter

def table1(request):
    filter = Table1Filter(request.GET, queryset=Table1.objects.all())
    return render(request, 'table1.html', {'filter': filter})

我手动编写了一些基本的过滤内容然后意识到Django过滤器是一件事,并认为我不应该重新发明轮子。这样做的目的是显示来自现有数据库的数据,并允许最终用户对其进行过滤。如果有更好的方法可以做到这一点,我全都听见了。感谢您的投入,并花时间阅读本文!

2 个答案:

答案 0 :(得分:0)

也许是因为您还没有在models.py文件中导入django_filters

import django_filters # instead of django_filters import FilterSet

或反过来使用它。

答案 1 :(得分:0)

您的问题可能是循环导入......

在models.py中导入from django_filters import FilterSet,然后导入fitlers.py其中一个模型models.py,同时django_filters

这可能会导致问题。我想你不需要在models.py

中导入那个库和FilterSet