【发布时间】:2017-11-30 19:11:28
【问题描述】:
我在我的 Django 项目中有一个简单的搜索。除了按名称搜索之外,我还想使用它们的类型和部分工厂信息来搜索文档。 这是我的 models.py:
class Docs(models.Model):
Date = models.DateField(default=date.today)
Name = models.CharField(max_length=50)
Type = models.ForeignKey(DocTypes)
Part = models.ForeignKey(Parts)
Link = models.FileField(upload_to='Docs/%Y/%m/%d')
class Parts(models.Model):
Name = models.CharField(max_length=50)
def __str__(self):
return str(self.Name)
class DocTypes(models.Model):
Type = models.CharField(max_length=50)
def __str__(self):
return str(self.Type)
我的forms.py:
class DocsSearchForm(ModelForm):
class Meta:
model = Docs
fields = [ 'Name', 'Type', 'Part']
这是我的 views.py 的一部分,如果没有进行搜索,则会给出所有文档
def showdocs(request):
if request.method == 'POST':
form = DocsSearchForm(request.POST)
documents = Docs.objects.filter(Name__contains=request.POST['Name']|
Type==request.POST['Type']|
Part==request.POST['Part'])
else:
form = DocsSearchForm()
documents = Docs.objects.all()
return render(
request,
'showdocs.html',
{'documents': documents, 'form':form}
所以,问题如下:如果我尝试使用搜索,那么我有 /showdocs 处的名称错误 名称“类型”未定义。 POST 值为:Part '1'、Name 'Example'、Type '1'。
如果我删除
Type==request.POST['Type']|
Part==request.POST['Part']
然后按名称搜索效果很好。所以我猜这个问题是关于按外键值搜索的,但没有更多的想法。将不胜感激。
【问题讨论】:
标签: python django search foreign-keys