【问题标题】:How to add Search_fields in Django如何在 Django 中添加 Search_fields
【发布时间】:2012-06-28 01:19:33
【问题描述】:

我尝试使用 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')

我尝试使用以下代码为标题和正文添加搜索字段。

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

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

【问题讨论】:

    标签: python django django-admin


    【解决方案1】:

    您应该在网站底部而不是顶部注册您的网站。
    请尝试页面底部的 admin.site.register(Blog, BlogAdmin)。
    希望能解决你的问题

    【讨论】:

      【解决方案2】:

      搜索字段应该是一个列表,而不是一个元组。

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

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

      admin.site.register(Blog, BlogAdmin)
      

      编辑:

      从上面很难判断,但您应该考虑只从 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)
      

      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
      

      【讨论】:

      • 我已经添加了这个“admin.site.register(Blog)”,但是当我尝试添加这个“admin.site.register(Blog, BlogAdmin)”时,浏览器显示一个名为“ NameError at /admin/"...仍然有同样的问题。
      • @Grant,确保从 .models 导入博客 - “从 myapp.models 导入博客”。这应该与其他导入语句一起位于顶部。
      • 我的导入如下:::::::::: 这是正确的吗?? from blog.models import Blog from django.contrib import admin from django.db import models admin.site.register(Blog)
      • @Grant 在上面的问题中或在 pastebin (pastebin.com/) 中发布您的 admin.py
      • "搜索字段应该是一个列表,而不是一个元组。"是什么让你这么想的? (admin.E126) The value of 'search_fields' must be a list or tuple.
      猜你喜欢
      • 2015-08-23
      • 2019-06-18
      • 1970-01-01
      • 1970-01-01
      • 2018-05-20
      • 1970-01-01
      • 2019-11-25
      • 1970-01-01
      • 2011-03-04
      相关资源
      最近更新 更多