如何在Django中添加Search_fields

Gra*_*ant 12 python django django-admin

我尝试使用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')
Run Code Online (Sandbox Code Playgroud)

我尝试使用以下代码为标题和正文添加search_fields.

class BlogAdmin(admin.ModelAdmin):
    . . .
    search_fields = ('title','body')
    . . .
Run Code Online (Sandbox Code Playgroud)

当我运行这个时,我看不到任何搜索框.这是为什么 ?我想要你的帮助.我只是个初学者.谢谢!

And*_*dge 30

搜索字段应该是列表,而不是元组.

class BlogAdmin(admin.ModelAdmin):
    . . .
    search_fields = ['title','body']
    . . . 
Run Code Online (Sandbox Code Playgroud)

然后确保将此管理对象与模型相关联.

admin.site.register(Blog, BlogAdmin)
Run Code Online (Sandbox Code Playgroud)

编辑:

从上面来说很难说,但你应该考虑从models.py导入模型,而不是在admin.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)
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

  • “搜索字段应该是列表,而不是元组。” 是什么让你这么想的?((admin.E126)'search_fields'的值必须是列表或元组。 (2认同)