пятница, 12 апреля 2013 г.

Поиск по атрибутам модели в админке Django




У нас есть связанные модели в файле collection/models.py:
from django.db import models


class Vuz(models.Model):

    name = models.CharField(max_length=150, verbose_name='Название вуза')
    name_short = models.CharField(max_length=150, verbose_name='Аббревиатура вуза')
    vuz_url = models.SlugField(verbose_name='Ярлык для использования в url')

    def __unicode__(self):
        return self.name
        
    class Meta:
        verbose_name = 'ВУЗ'
        verbose_name_plural = 'ВУЗы'


class Author(models.Model):
    fio = models.CharField(max_length=100, verbose_name='Ф.И.О.')
    about = models.TextField(verbose_name='Об авторе')
    birthday = models.DateField(verbose_name='Дата рождения')
    vuz = models.ForeignKey(Vuz, verbose_name='ВУЗ')

    def __unicode__(self):
        return self.fio
Если мы хотим организовать поиск в админке Django для модели Author по полям ФИО и ВУЗ, то нам нужно использовать параметр search_fields в файле collection/admin.py:
from django.contrib import admin
from collection.models import Author


class AuthorAdmin(admin.ModelAdmin):
    search_fields = ('fio','vuz__name',)

admin.site.register(Author, AuthorAdmin) 

Обратите внимание, что в модели Author поле vuz связано отношением ManyToMany с моделью Vuz. Поэтому через двойное подчеркивание мы указываем, по какому полю связанной модели мы хотим производить поиск: vuz__name

Комментариев нет:

Отправить комментарий