J'ai 3 modèles associés dans mon système. Chaque utilisateur appartient à un endroit particulier. Les utilisateurs peuvent envoyer des messages et commenter des messages, un peu comme des fils de discussion.Administrateur Django dit SuspiciousOperation, filtrage non autorisé
Voici les 3 modèles:
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)
Je veux que cette structure se refléter dans mes AdminModels. Donc, pour mon PlaceAdmin
j'ai écrit ceci:
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'
Cela fonctionne parfaitement, chaque lieu des liens vers une liste de messages filtrés par cet endroit. Donc, je l'ai fait la même chose pour mon 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'
Et je reçois l'erreur suivante:
SuspiciousOperation at /admin/user_content/comment/
Filtering by message__id__exact not allowed
Je ne comprends pas pourquoi on est autorisé et l'autre non. Des idées? J'utilise Django 1.5.