Kullanıcı düzenleme sayfasındaki izinler listesini değiştirme olasılığı var mı? Örnek yönetici günlüğü girdisi veya kimlik doğrulama grubu vb. Için tüm izinleri göstermem. Bazıları hariç tutmak için bir ana sorgulamayı nasıl değiştirebilirim?Django admin - izin listesini değiştir
cevap
Sorunuzu yanıtlayan this topic numaralı fikri de aldım, ancak bu net değil.
Görselleştirme için kullanılan UserAdmin formundaki kullanıcı izinleri sorgu nesnesinin üzerine yazmanız gerekir. ne istersen için Kendi sorgu kümesi içinde filtreyi değiştirebilir
from django.contrib.auth.models import User
from django.contrib.auth.admin import UserAdmin
class MyUserAdmin(UserAdmin):
def get_form(self, request, obj=None, **kwargs):
# Get form from original UserAdmin.
form = super(MyUserAdmin, self).get_form(request, obj, **kwargs)
if 'user_permissions' in form.base_fields:
permissions = form.base_fields['user_permissions']
permissions.queryset = permissions.queryset.filter(content_type__name='log entry')
return form
: Örnekler:
Bunu yapmak için, en kolay yolu get_form
yöntemi UserAdmin bir alt sınıfını oluşturup üzerine yazılmasıdır
# Exclude admin and auth.
permissions.queryset = permissions.queryset.exclude(content_type__app_label__in=['admin', 'auth'])
# Only view permissions of desired models (Can be your models or Django's)
permissions.queryset = permissions.queryset.filter(content_type__model__in=['blog', 'post', 'user', 'group'])
, yeni oluşturulan Yönetici ile Kullanıcı modelini kaydetmek zorunda
Düzenleme: Maik Hoepfel'dan yorum ekledim, çünkü bu kod yeni kullanıcı oluşturulurken django çöktü.
Sen Grup düzenleme sayfasında izin listesi ile aynı şeyi, ancak GroupAdmin uzanan başka Yönetici oluşturmak ve form.base_fields['permissions']
Renato cevap form.base_fields['user_permissions']
değiştirmek zorunda neredeyse mükemmel. Django Yöneticisi, kullanıcıya aynı formda iki adımlı bir işlem eklemeyi ve kodunun ilk adımda 'user_permissions' için bir KeyError ile başarısız olmasını sağlar.
düzeltme, yeterince kolaydır hemen altında yerine kodu kullanın:
def get_form(self, request, obj=None, **kwargs):
form = super(MyUserAdmin, self).get_form(request, obj, **kwargs)
# adding a User via the Admin doesn't include the permissions at first
if 'user_permissions' in form.base_fields:
permissions = form.base_fields['user_permissions']
permissions.queryset = permissions.queryset.filter(content_type__name='log entry')
return form
- 1. Alan adını django admin olarak değiştir
- 2. Django: admin
- 3. django Admin sayfası bozuk
- 4. ng-admin filtreleri değiştir tuşu değiştir
- 5. django admin/inline
- 6. Django Admin Arama optimizasyonu
- 7. django-taggit: etiketleri admin
- 8. Unicode ve Django admin
- 9. Django admin GenericForeignKey inline
- 10. django admin sitesine bağlantı
- 11. Django admin inline
- 12. Grup modelleri django admin
- 13. Django: OperationalError at/admin/
- 14. Django Admin Fieldsets
- 15. Django admin seferde
- 16. Django Admin - özel yöntemle sıralama
- 17. Django özel kullanıcı admin change_password
- 18. Django Yönetici 'Sayfa bulunamadı/admin/
- 19. Django admin list_display yeni satır
- 20. raylar içinde navbar-başlığını değiştir admin
- 21. Django admin eylemlerinde özel hata iletisi
- 22. UnicodeEncodeError Django admin içindeki dosyaları yüklerken admin olarak ara
- 23. Çoklu ModelAdmins/görünümler aynı modelde Django admin
- 24. Django: GenericStackedInline'da can_delete izin vermez
- 25. Neden django admin NULL olabilecek yabancı anahtarları kabul etmiyor?
- 26. Django Hatası (13, 'İzin reddedildi')
- 27. Django admin sayfasından 'Siteler' kaldırılıyor sayfası
- 28. Django - admin UserProfile m2m alan - Hata
- 29. Django admin - ForeignKey görüntülü reklam metnini değiştirme
- 30. Django admin list_select_related bu durumda neden çalışmıyor?