简体   繁体   English

Django管理员说SuspiciousOperation,不允许过滤

[英]Django admin says SuspiciousOperation, filtering not allowed

I have 3 related models in my system. 我的系统中有3个相关模型。 Each user belongs to a particular place. 每个用户都属于一个特定的地方。 Users can send messages, and comment on messages, kind of like forum threads. 用户可以发送消息并评论消息,就像论坛主题一样。

Here are the 3 models: 这是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)

I want this structure to be reflected in my AdminModels. 我希望这种结构能够反映在我的AdminModels中。 So for my PlaceAdmin I wrote this: 因此,对于我的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'

This works perfectly, each place links to a list of messages filtered by that place. 完美地工作,每个位置链接到该位置过滤的邮件列表。 So I did the same for my MessageAdmin : 所以我对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'

And I get the following error: 我得到以下错误:

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

I don't understand why one is allowed and the other isn't. 我不明白为什么一个被允许而另一个不允许。 Any ideas? 有任何想法吗? I'm using Django 1.5. 我正在使用Django 1.5。

我意识到自己犯了一个错误-此处显示的代码经过了简化,而Message模型实际上是从抽象的Content模型继承的,所以我需要注释列表的URL为:

<a href="{0}?message__content_ptr__exact={1}">List comments</a>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM