【发布时间】:2018-08-24 20:55:23
【问题描述】:
我正在尝试使用 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 过滤器是一个东西,并认为我不应该重新发明轮子。这样做的目的是显示现有数据库中的数据并允许最终用户对其进行过滤。如果有更好的方法可以做到这一点,我会全力以赴。感谢您的意见,并花时间阅读本文!
【问题讨论】:
标签: django database python-3.x postgresql django-filter