Python 为什么';我的搜索功能不工作吗?
我目前正在尝试为我的Django应用程序实现搜索功能。在处理实际的搜索查询之前,一切都很好。喂,我搜索“哈罗”。Django将返回以下错误:Python 为什么';我的搜索功能不工作吗?,python,django,Python,Django,我目前正在尝试为我的Django应用程序实现搜索功能。在处理实际的搜索查询之前,一切都很好。喂,我搜索“哈罗”。Django将返回以下错误: django.core.exceptions.FieldError FieldError: Cannot resolve keyword 'title' into field. Choices are: adresse, arbejde, beskrivelse, email, foerste_session, fulde_navn, id, profil
django.core.exceptions.FieldError
FieldError: Cannot resolve keyword 'title' into field. Choices are: adresse, arbejde, beskrivelse, email, foerste_session, fulde_navn, id, profilbillede, relateret_til_andre_klienter, tidligere_klient, vurder_sidste_session
我的表单(我使用的是ModelForm)和搜索函数之间似乎存在某种冲突。我如何着手解决我的问题
这是我的forms.py:
from django import forms
from .models import Client
class ClientForm(forms.ModelForm):
class Meta:
model = Client
fields = (
'fulde_navn',
'adresse',
'email',
'tidligere_klient',
'foerste_session',
'beskrivelse',
'arbejde',
'relateret_til_andre_klienter',
'vurder_sidste_session',
'profilbillede'
)
这是我的模特
from __future__ import unicode_literals
from django.utils.encoding import python_2_unicode_compatible
import uuid
from django.db import models
from django.conf import settings
from django.core.urlresolvers import reverse
import os
import uuid
YESNO_CHOICES = (
(0, 'Ja'),
(1, 'Nej')
)
SESSION_CHOICES = (
(0, '1'),
(1, '2'),
(2, '3'),
(3, '4'),
(4, '5'),
)
def upload_to_location(instance, filename):
blocks = filename.split('.')
ext = blocks[-1]
filename = "%s.%s" % (uuid.uuid4(), ext)
instance.title = blocks[0]
return os.path.join('uploads/', filename)
# Create your models here.
class Client(models.Model):
fulde_navn = models.CharField('Navn', max_length=75)
adresse = models.CharField(max_length=100)
email = models.EmailField(null=True, blank=True)
tidligere_klient = models.IntegerField(choices=YESNO_CHOICES, null=True, blank=True)
foerste_session = models.DateField('Dato for 1. session', null=True, blank=True)
beskrivelse = models.TextField('Noter', null=True, blank=True)
arbejde = models.CharField('Arbejde', max_length=200)
relateret_til_andre_klienter = models.IntegerField(choices=YESNO_CHOICES, null=True, blank=True)
vurder_sidste_session = models.IntegerField(choices=SESSION_CHOICES, null=True, blank=True)
profilbillede = models.ImageField('Profilbillede',
upload_to='profile_pics/%Y-%m-%d/',
null=True,
blank=True)
def __unicode__(self):
return self.fulde_navn
def get_absolute_url(self):
return reverse(viewname="client_detail", args=[self.id])
最后是我的搜索功能所在的my views.py:
from django.shortcuts import render, redirect, get_object_or_404
from django.views.generic.base import TemplateView
from django.views.generic.list import ListView
from django.views.generic.detail import DetailView
from django.views.generic.edit import CreateView, UpdateView
from . import models
from .forms import ClientForm
# Create your views here.
class ClientsListView(ListView):
model = models.Client
template_name = 'clients/list.html'
paginate_by = 20
class SearchListView(ClientsListView):
def get_queryset(self):
incoming_query_string = self.request.GET.get('query', '')
return models.Client.objects.filter(title__icontains=incoming_query_string)
class ClientsDetailView(DetailView):
model = models.Client
template_name = 'clients/detail.html'
def client_create(request):
if request.method == 'POST':
form = ClientForm(request.POST)
if form.is_valid():
client = form.save()
client.save()
return redirect('client_detail', pk=client.pk)
else:
form = ClientForm()
return render(request, 'clients/form.html', {'form': form})
def client_edit(request, pk):
client = get_object_or_404(models.Client, pk=pk)
if request.method == "POST":
form = ClientForm(request.POST, instance=client)
if form.is_valid():
client = form.save()
client.save()
return redirect('client_detail', pk=client.pk)
else:
form = ClientForm(instance=client)
return render(request, 'clients/form.html', {'form': form})
class ClientsUpdateView(UpdateView):
model = models.Client
template_name = 'clients/form.html'
我如何解决这个问题?我想让我的用户能够在我的列表中搜索客户 在这一行中:
return models.Client.objects.filter(title__icontains=incoming_query_string)
您正在尝试检查字段标题
是否包含传入的查询字符串
。但是,您的ClientForm
没有此类字段
您应该使用其中列出的一个字段,或者将
标题
添加为字段。它与客户端表单
无关,是客户端
模型没有标题
字段。另外,upload\u to\u location
函数中还有一个地方可能有问题:instance.title=blocks[0]
.Srsly,thx Amaury!!工作得很有魅力。我对Python/Django开发相当陌生