Django search_fields外键不起作用

时间:2011-04-24 01:56:47

标签: 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)

然后我创建了ModelAdmin:

class SubjectAdmin(admin.ModelAdmin):
    list_display = ('module', 'name', 'enabled',)
    list_filter = ('module', 'name',)
    search_fields = ('module', 'name',)

但我不能按模块过滤或搜索。

2 个答案:

答案 0 :(得分:8)

您注册了ModelAdmin吗?

admin.site.register(Subject, SubjectAdmin)

您可能还想尝试为模块提供__unicode__方法,或使用关系跨越。

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

# or...
# within Module
def __unicode__(self):
    return self.name

答案 1 :(得分:4)

用于引用外键__

如果您想要模块名称的示例:

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',)