Dans l'administrateur django, en utilisant django 1.2, j'essaie d'ajouter un InlineModelAdmin pour appliquer un commentaire sur save lorsqu'une modification est apportée à une entrée. (Une entrée devrait avoir un "ChangeComment" pour chaque édition).Limiter le sous-jeu d'entrées affichées pour un administrateur django Inline
Je ne veux pas afficher les entrées précédentes, donc je suis en train de forcer le formset.queryset de ChangeCommentInline être vide, en créant NoCommentsInlineFormset et l'affectation du formset dans mon ChangeCommentInline, mais est toujours en renvoyant les entrées existantes.
https://docs.djangoproject.com/en/1.3/topics/forms/modelforms/#changing-the-queryset
Note - Dans le lien ci-dessus, ils utilisent BaseModelFormset, j'utilise BaseInlineFormset, que je pense peut-être la question. Si j'échange BaseInlineFormset avec BaseModelFormset Je reçois une erreur à propos de "instance" qui n'existe pas.
admin.py
class NoCommentsInlineFormset(models.BaseInlineFormset):
def __init__(self, *args, **kwargs):
super(NoCommentsInlineFormset, self).__init__(*args, **kwargs)
self.queryset = ChangeComment.objects.none()
class ChangeCommentInline(admin.StackedInline):
model = ChangeComment
extra = 1
exclude = ("user",)
formset = NoCommentsInlineFormset
def save_model(self, request, obj, form, change):
"""auto-assign logined in user to comment"""
if not change:
obj.user = request.user
obj.save()
class EntryAdmin(admin.ModelAdmin):
inlines = (ChangeCommentInline,)
peut limiter les entrées de ChangeComment affichées dans le Inline faire, ou est-il une meilleure façon de gérer cette situation?
Jetez un oeil à BaseModelAdmin: def queryset (auto, demande): "" » Renvoie un QuerySet de toutes les instances de modèles qui peuvent être modifiés par la Ce site est utilisé par changelist_view "" " – benjaoming
... ce que vous devez faire est d'écraser la méthode queryset sur votre InlineModelAdmin. – benjaoming
ok, je vais essayer. Merci!(allez-y et ajoutez-le comme une réponse si vous voulez plus de rep) – monkut