2013-07-26 3 views
1

모델의 인스턴스가 여러 개 있으며 인스턴스마다 관련 이메일 주소가 있습니다. 그러나 여러 개의 인스턴스가 동일한 연결된 전자 메일 주소를 가지고 있지만 filter['email']admin.py에 넣으면 인스턴스의 전자 메일, 즉 동일한 전자 메일의 여러 복사본이 여러 경우에 걸쳐 긴 목록으로 표시됩니다.Django admin filter

여러 번 나열된 이메일을 삭제할 수있는 방법이 있습니까? 또는 필터보기를 좀 더 멋지게 사용자 정의하는 방법은 무엇입니까? (아마도 드롭 다운 메뉴일까요?)

나는 현재 ManyToManyField 관계가 없거나 이와 비슷한 것을 가지고 있습니다. 방금 데이터베이스에 인스턴스 nameemail이있는 인스턴스가 있습니다. 내 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 그래서 다음과 같습니다 분명히 내가 https://docs.djangoproject.com/en/1.3/ref/contrib/admin/보고 된 적이 있지만 정말의 방법으로 많이 볼 수

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) 

내 관리자의 필터보기 사용자 정의.

답변

1

코드를 게시 할 수 있습니까? 나는 당신의 이메일에 대한 인스턴스 들간의 관계를 이해할 수 있을지 잘 모르겠다. 이메일 필드 일까? 다른 모델에 대한 ForeighKey? ManyToMany 또는 이와 유사한 관계가 아닌 경우 어떻게 하나 이상입니까? 관리자가 필터링을 어떻게 수행합니까?

수정 이제 알았습니다. 당신이 원하는 것은 불가능합니다. 그들은 여전히 ​​다른 개체이기 때문에 그들은 같은 이메일은 중요하지 않다는 사실을 장고 관리 사이트를 참조하십시오. 이 필드를 고유하게 지정하거나 관리 사이트 코드를 사용하지 않고 지정하는 방법은 없습니다.

더 나은 해결책은 전자 메일을 관리 모델에서 검색 가능하도록 구성한 다음 [email protected] 전자 메일을 검색하면 모든 일치 항목을 다시 가져 오는 것입니다.

또 다른 좋은 해결책은 전자 메일을 다른 모델로 만들고 ManyToMany 관계를 통해 항목 모델에 연결하는 것입니다. 그런 다음 각 이메일에 대한 모든 관련 항목을 표시하는 메소드로 EmailAdmin을 만듭니다.

모두 실제로 필요한 것이 무엇입니까? 궁극적으로 관리자 사이트를 직접 작성하거나 엉망으로 작성하여 필요할 때 수정할 수 있습니다.

또한 전자 메일을 CharField에서 EmailField로 변경할 수 있습니다. 희망이 도움이!

+0

내 데이터베이스가 처음으로 LDAP에 있으므로 'ForeignKey' 자료를 사용할 수 없습니다. 내 데이터베이스는'name'과'email' 필드를 가진 많은 객체를 가지고 있습니다. 그리고 많은 객체는 단지 동일한 이메일을 가지고 있습니다. 관리자는 'list_filter = ['pub_date ']'.... 행을 포함 시켰습니다. 관리자 페이지의 RHS에는 여러 개의 복사본을 포함하여 인스턴스의 전자 메일 목록이 있습니다. 같은 사람. – user2564502

+0

그래서 무엇이 문제입니까? 당신은 이메일의 일부가 스스로를 반복한다는 것을 스스로 말했기 때문에 그것이 한 번 이상 볼 수있는 이유가됩니다. 나는 정말로 당신이 코드를 게시 할 것을 제안한다. 그래서 나는 당신이 가지고있는 문제를 더 잘 이해할 수있다. – yuvi

+0

나를 도우려는 것에 감사하지만, 코드의 어떤 부분이 도움이 될지 이해하지 못한다. . models.py 자체? (그것은 단지 이름과 이메일을 정의하는 것입니다). admin.py는'list_filter = [ 'email']' – user2564502