2013-10-02 3 views
0

내 시스템에 3 개의 관련 모델이 있습니다. 각 사용자는 특정 장소에 속합니다. 사용자는 메시지를 보낼 수 있으며 메시지와 같은 종류의 포럼 스레드와 같은 댓글을 달 수 있습니다. 여기 Django 관리자가 SuspiciousOperation에 필터링을 허용하지 않았습니다.

은 3 개 모델입니다 :

class Place(models.Model): 
    name = models.CharField(max_length=50, unique=True) 
    slug = models.SlugField(max_length=50, unique=True) 

class Message(models.Model): 
    creator = models.ForeignKey(User) 
    title = models.CharField(max_length=40) 
    content = models.CharField(max_length=3000) 
    date_created = models.DateTimeField(default=timezone.now) 
    place = models.ForeignKey(Place) 

class Comment(models.Model): 
    creator = models.ForeignKey(User) 
    content = models.CharField(max_length=3000) 
    date_created = models.DateTimeField(default=timezone.now) 
    message = models.ForeignKey(Message) 

나는이 구조 내 AdminModels에 반영하고자합니다. 그래서 내 PlaceAdmin에 대해 내가 쓴 :

class PlaceAdmin(admin.ModelAdmin): 
    list_display = ('name', 'slug', 'list_messages') 

    def list_messages(self, obj): 
     url = reverse('admin:user_content_message_changelist') 
     return '<a href="{0}?place__id__exact={1}">List messages</a>'.format(url, obj.id) 

    list_messages.allow_tags = True 
    list_messages.short_description = 'Messages' 

이 완벽하게 작동, 그 장소에 의해 필터링 된 메시지 목록에 각 장소에 링크되어 있습니다. 그래서 난 내 MessageAdmin 위해 동일을했다 :

class MessageAdmin(admin.ModelAdmin): 
    list_display = ('title', 'list_comments') 

    def list_comments(self, obj): 
     url = reverse('admin:user_content_comment_changelist') 
     return '<a href="{0}?message__id__exact={1}">List comments</a>'.format(url, obj.id) 

    list_comments.allow_tags = True 
    list_comments.short_description = 'Comments' 

그리고 나는 다음과 같은 오류 얻을 :

SuspiciousOperation at /admin/user_content/comment/ 
Filtering by message__id__exact not allowed 

하나를 허용하고 다른이 아닌 왜 이해가 안가. 어떤 아이디어? 나는 Django 1.5를 사용하고있다.

답변

0

은 내가 실수했다 실현 - 나는 단순화 된 여기 보여 주었다 코드, 실제로 추상 Content 모델에서 상속 Message 모델을, 그래서 나는 것으로 주석 목록에 대한 URL을 필요 :

<a href="{0}?message__content_ptr__exact={1}">List comments</a> 
관련 문제