Внешний ключ Django search_fields не работает - PullRequest
2 голосов
/ 24 апреля 2011

У меня есть две модели:

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 ]

9 голосов
/ 24 апреля 2011

Вы зарегистрировали ModelAdmin?

admin.site.register(Subject, SubjectAdmin)

Вы также можете попробовать либо дать модулю метод __unicode__, либо использовать охват отношений.

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

# or...
# within Module
def __unicode__(self):
    return self.name
4 голосов
/ 31 января 2014

Для ссылки на внешний ключ используйте __

Пример, если вы хотите имя модуля:

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