0
私はFooの名前のようなモデルを持っています。私はエントリの日付フィールドを使用して2日以上経過したFooエントリの編集/削除を許可しませんが、スーパーユーザは何の制限もなく編集することができます。 これをどうすれば実現できますか? おかげの制限管理モデルのエントリ
私はFooの名前のようなモデルを持っています。私はエントリの日付フィールドを使用して2日以上経過したFooエントリの編集/削除を許可しませんが、スーパーユーザは何の制限もなく編集することができます。 これをどうすれば実現できますか? おかげの制限管理モデルのエントリ
上書きModelAdminの者queryset and has_change_permission:
from django.contrib.admin import ModelAdmin
class FooAdmin(ModelAdmin):
def has_change_permission(self, request, obj):
return obj is None or self.queryset(request).filter(pk=obj.pk).count() > 0
def queryset(self, request):
query = super(FooAdmin, self).queryset(request)
if request.user.is_superuser:
return query
else:
from datetime import datetime, timedelta
return query.filter(entry__gt=datetime.now()-timedelta(days=2))
admin.site.register(Foo, FooAdmin)
has_change_permissionは、変更ビューで使用され、リストビューでクエリセットされます。私はDRYを維持するためにオーバーライドされたhas_change_permissionの中のクエリーセットを再利用します(変更パーミッションチェックでこのロジックを追加することなくクエリーセットに追加のフィルタを追加できます)が、追加のクエリが必要です。
スニペットのおかげで、あなたは私を救った:)! – Hellnar
django 1.6+でメソッドが 'get_queryset'に名前変更されました –