我正在通過實用的Django Projects書籍工作,並難過。本書適用於Django的早期版本。我正在使用v1.3。django FieldError在/ search /無法解析關鍵字'searchkeyword'
的問題是在視圖中,在 '搜索_ 關鍵字 _keyword__in ......'
from django.contrib.flatpages.models import FlatPage
from django.shortcuts import render_to_response
def search(request):
query = request.GET.get('q', '')
keyword_results = results = []
if query:
keyword_results = FlatPage.objects.filter(searchkeyword__keyword__in=query.split()).distinct()
results = FlatPage.objects.filter(content__icontains=query)
return render_to_response('search/search.html',
{'query' : query,
'keyword_results': keyword_results,
'results' : results })
的models.py是
from django.contrib.flatpages.models import FlatPage
from django.db import models
class SearchKeyword(models.Model):
keyword = models.CharField(max_length=50)
page = models.ForeignKey(FlatPage)
def __unicode__(self):
return self.keyword
完整的錯誤是:
Cannot resolve keyword 'searchkeyword' into field. Choices are: content, enable_comments, id, registration_required, sites, template_name, title, url
我認爲這是FlatPages的選項。似乎沒有找到外鍵關係。
任何想法可能是錯誤的或如何正確地執行查找?謝謝。
這裏是萬一admin.py它有一些軸承:
from django.contrib.flatpages.admin import FlatPageAdmin
from django.contrib import admin
from cms.search.models import SearchKeyword
from django.contrib.flatpages.models import FlatPage
# Define an inline admin descriptor for SearchKeywords model
class SearchKeywordInline(admin.TabularInline):
model = SearchKeyword
# Define a FlatPageAdmin class
class ExtendedFlatPageAdmin(FlatPageAdmin):
inlines = [
SearchKeywordInline,
]
# Re-register FlatPageAdmin
admin.site.unregister(FlatPage)
admin.site.register(FlatPage, ExtendedFlatPageAdmin)
包含SearchKeyword的應用程序是否已添加到settings.py中的INSTALLED_APPS? –
是的。 'cms.search', – Steve