Django search_fields外键不起作用

kel*_*fix 2 django django-admin

我有这两个模型:

class Module(models.Model):
    id = models.AutoField(primary_key=True)
    name = models.CharField(unique=True, max_length=255)

class Subject(models.Model):
    id = models.AutoField(primary_key=True)
    module = models.ForeignKey(Module)
Run Code Online (Sandbox Code Playgroud)

然后我创建了ModelAdmin:

class SubjectAdmin(admin.ModelAdmin):
    list_display = ('module', 'name', 'enabled',)
    list_filter = ('module', 'name',)
    search_fields = ('module', 'name',)
Run Code Online (Sandbox Code Playgroud)

但我无法通过模块过滤或搜索.

Jos*_*ton 10

你注册了ModelAdmin吗?

admin.site.register(Subject, SubjectAdmin)
Run Code Online (Sandbox Code Playgroud)

您可能还想尝试给模块一个__unicode__方法,或者使用关系跨越.

list_filter = ('module__name', 'name',)

# or...
# within Module
def __unicode__(self):
    return self.name
Run Code Online (Sandbox Code Playgroud)


小智 6

对于引用外键使用 __

例如,如果您想要模块名称:

class Module(models.Model):
    id = models.AutoField(primary_key=True)
    name = models.CharField(unique=True, max_length=255)

    def __unicode__(self):
        return self.name:

class SubjectAdmin(admin.ModelAdmin):
    list_display = ('module', 'name', 'enabled',)
    list_filter = ('module__name', 'name',)
    search_fields = ('module__name', 'name',)
Run Code Online (Sandbox Code Playgroud)