2013-07-26 2 views
1

У меня есть несколько экземпляров модели, и каждый экземпляр имеет связанный адрес электронной почты. Тем не менее, несколько экземпляров имеют один и тот же адрес электронной почты, но когда я положил filter['email'] в свой admin.py, я получаю длинный список электронных писем экземпляров, т. Е. Несколько копий одного и того же письма в нескольких случаях.Django admin filter

Есть ли способ, которым я могу удалить электронные письма, перечисленные несколько раз? Или способ настройки просмотра фильтра во что-то немного приятнее? (выпадающее меню может быть?)

У меня сейчас нет отношений ManyToManyField или что-то в этом роде. У меня просто экземпляры в моей базе данных с полями name и email. Моя models.py выглядит следующим образом:

import ldapdb.models 
from ldapdb.models.fields import CharField, IntegerField, ListField 

class Item(ldapdb.models.Model): 
    item = CharField(db_column='item', max_length=30, primary_key=True, unique=True) 
    email = CharField(db_column='mail', max_length=20) 

Мой admin.py выглядит так:

from items.models import Item 
from django.contrib import admin 

class ItemAdmin(admin.ModelAdmin): 
    readonly_fields = ('email',) 
    list_display = ('item', 'email') 
    list_filter = ['email'] 
    search_fields = ['item'] 

admin.site.register(Item, ItemAdmin) 

Очевидно, я смотрел на https://docs.djangoproject.com/en/1.3/ref/contrib/admin/, но я не могу видеть много по пути настройка профиля фильтра моего администратора.

ответ

1

Можете ли вы разместить часть своего кода? Я не совсем уверен, что я понял отношения между экземплярами к вашей электронной почте - это поле электронной почты? ForeighKey для другой модели? как есть более одного, если это не ManyToMany или подобные отношения? И как происходит фильтрация в админке?

EDIT Хорошо, теперь я понимаю проблему. То, что вы хотите, невозможно. Обратите внимание на сайт администратора django, что тот же адрес электронной почты не имеет значения, потому что это все еще другой объект. Нет никакого способа обойти это, не указывая, чтобы это поле было уникальным или возилось с кодом сайта администратора.

Лучшим решением было бы настроить электронное письмо как доступное для поиска в модели администратора, а затем при поиске электронной почты [email protected] оно вернет все спички.

Еще одно хорошее решение - сделать электронную почту другой моделью и связать ее с моделью Item через отношения ManyToMany. Затем вы создаете EmailAdmin с методом, который показывает все связанные элементы для каждого письма.

Все зависит от того, что вам действительно нужно. В конечном итоге вам может понадобиться написать свой собственный взгляд или запутать сайт администратора, чтобы изменить его на то, что вам нужно.

Также вы можете изменить адрес электронной почты от CharField до EmailField. Надеюсь это поможет!

+0

Прежде всего, моя база данных находится в LDAP, поэтому нет доступных материалов 'ForeignKey'. В моей базе данных есть много объектов с полями 'имя' и' электронная почта '. У многих объектов есть один и тот же адрес электронной почты. В admin я включил строку 'list_filter = ['pub_date']' .... и т. Д. На RHS страницы администратора, это всего лишь длинный список электронных писем экземпляров ... в том числе многократные копии того же самого. – user2564502

+0

так в чем проблема? вы сами сказали, что некоторые из писем повторяются, поэтому разумно, что вы увидите это несколько раз. Я действительно предлагаю вам опубликовать некоторые из вашего кода, поэтому я могу лучше понять проблему, с которой вы столкнулись. – yuvi

+0

Я ценю, что вы пытаетесь мне помочь, но я не понимаю, какую часть кода вы хотели бы видеть, что поможет вам , Сам models.py? (это просто определение имени и электронной почты). admin.py - это просто административный файл с болотным стандартом с линией 'list_filter = ['email']' – user2564502

Смежные вопросы