0

私のシステムには 3 つの関連モデルがあります。各ユーザーは特定の場所に属しています。ユーザーは、フォーラムのスレッドのように、メッセージを送信したり、メッセージにコメントしたりできます。

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を使用しています。

4

1 に答える 1