django 1.2では、エントリを変更したときにInlineModelAdminを追加して保存時にコメントを適用しようとしています。 (エントリはすべての編集に対して「ChangeComment」を持つことが期待されます)。django管理者用に表示されるエントリのクエリーセットを制限するInline
私は以前のエントリを表示したくないので、私はNoCommentsInlineFormsetを作成し、私のChangeCommentInlineでフォームセットを割り当てることによって、空にChangeCommentInlineのformset.querysetを強制しようとしているが、あるい既存のエントリを返します。
https://docs.djangoproject.com/en/1.3/topics/forms/modelforms/#changing-the-queryset
注 - 彼らはBaseModelFormsetを使用する上記のリンクでは、私が問題になることがあり期待BaseInlineFormsetを、使用しています。私が交換した場合BaseInlineFormsetとBaseModelFormset「インスタンス」が存在しないというエラーが表示されます。
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,)
行うことがインラインで表示さChangeCommentエントリを制限し、またはこれを処理するためのより良い方法がありますができますか?
はBaseModelAdminを見てください: デフクエリセット(自己、リクエスト): 「」」で編集することができ、すべてのモデルインスタンスのクエリセットを返します 管理サイト。これはchangelist_viewで使用されています。 "" " – benjaoming
... InlineModelAdminのクエリーセットメソッドを上書きする必要があります。 – benjaoming
よろしくお願いします。ありがとう!(先に進み、より多くの担当者が必要な場合は答えとして追加してください) – monkut