22

Pythonを使用してDjangoに検索フィールドを追加しようとしました。以下は私が使用したコードです。

# admin.py file

from django.db import models
from blog.models import Blog
from django.contrib import admin
admin.site.register(Blog)

class Blog(models.Model):
    title = models.CharField(max_length=60)
    body = models.TextField()
    created = models.DateTimeField("Date Created")
    updated = models.DateTimeField("Date Updated")
    def __unicode__(self):
        return self.title

class Comment(models.Model):
    body = models.TextField()
    author = models.CharField(max_length=60)
    created = models.DateTimeField("Date Created")
    updated = models.DateTimeField("Date Updated")
    post = models.ForeignKey(Blog)
    def __unicode__(self):
        return self.body

class CommentInline(admin.TabularInline):
    model = Comment


class BlogAdmin(admin.ModelAdmin):
    list_display = ('title','created', 'updated')
    search_fields = ['title','body']
    list_filter = ('Date Created','Date Updated')
    inlines = [CommentInline]

class CommentAdmin(admin.ModelAdmin):
    list_display = ('post','author','body_first_60','created','updated')
    list_filter = ('Date Created','Date Updated')

次のコードを使用して、タイトルと本文の search_fields を追加しようとしました。

class BlogAdmin(admin.ModelAdmin):
    . . .
    search_fields = ('title','body')
    . . .

これを実行すると、検索ボックスが表示されません。何故ですか ?私はあなたの助けが必要です。私はただの初心者です。ありがとう!

4

2 に答える 2

44

検索フィールドは、タプルではなくリストにする必要があります。

class BlogAdmin(admin.ModelAdmin):
    . . .
    search_fields = ['title','body']
    . . . 

次に、この管理オブジェクトをモデルに関連付けていることを確認してください。

admin.site.register(Blog, BlogAdmin)

編集:

上からはわかりにくいですが、admin.py ファイルでモデルを再定義するのではなく、models.py からモデルをインポートすることを検討する必要があります。繰り返しますが、それはあなたが上でやっていることのようです。

admin.py:

from django.db import models
from blog.models import Blog
from django.contrib import admin

class CommentInline(admin.TabularInline):
    model = Comment

class BlogAdmin(admin.ModelAdmin):
    list_display = ('title','created','updated',)
    search_fields = ['title','body',]
    list_filter = ('Date Created','Date Updated',)
    inlines = [CommentInline,]

class CommentAdmin(admin.ModelAdmin):
    list_display = ('post','author','body_first_60','created','updated',)
    list_filter = ('Date Created','Date Updated',)

admin.site.register(Blog, BlogAdmin)

models.py

from django.db import models

class Blog(models.Model):
    title = models.CharField(max_length=60)
    body = models.TextField()
    created = models.DateTimeField("Date Created")
    updated = models.DateTimeField("Date Updated")

    def __unicode__(self):
        return self.title

class Comment(models.Model):
    body = models.TextField()
    author = models.CharField(max_length=60)
    created = models.DateTimeField("Date Created")
    updated = models.DateTimeField("Date Updated")
    post = models.ForeignKey(Blog)

    def __unicode__(self):
        return self.body
于 2012-06-26T16:53:48.950 に答える
0

サイトの上部ではなく、下部にサイトを登録する必要があります。
ページ下部の admin.site.register(Blog, BlogAdmin) をお試しください。
それがあなたの質問を解決することを願っています

于 2017-01-29T11:20:47.213 に答える