Nó cung cấp cho bạn bộ lọc theo trạng thái nhân viên và trạng thái superuser, nhưng những gì về các nhóm?Trong quản trị Django, cách lọc người dùng theo nhóm?
5
A
Trả lời
5
Xem Customizing an Admin form in Django while also using autodiscover
Về cơ bản, bạn xác định lớp Quản trị tùy chỉnh với các tính năng bạn muốn.
Sau đó, hủy đăng ký và đăng ký lớp Quản trị viên đã sửa đổi của bạn.
admin.site.unregister(User)
admin.site.register(User, MyUserAdmin)
12
Kể từ phiên bản 1.3 nó có thể được thực hiện using this:
list_filter = ('groups__name')
Dĩ nhiên như @ S. Lott giải thích bạn phải đăng ký lớp tùy chỉnh của bạn trong file admin.py:
from django.contrib import admin
from django.contrib.auth.admin import UserAdmin
from django.contrib.auth.models import User
class MyUserAdmin(UserAdmin):
list_filter = UserAdmin.list_filter + ('groups__name',)
admin.site.unregister(User)
admin.site.register(User, MyUserAdmin)
4
Đây là một ví dụ hoàn chỉnh, kế thừa từ SimpleListFilter, có sẵn trong Django 1.4 trở lên.
https://docs.djangoproject.com/en/1.4/ref/contrib/admin/#django.contrib.admin.ModelAdmin.list_filter
Hỗ trợ thiết lập tất cả các nhãn và thông số có sẵn để tạo bộ lọc hoàn toàn tùy chỉnh.
Nó hiển thị dưới dạng "Theo nhóm" trong bảng lọc, với danh sách tất cả các nhóm hiện có.
from django.contrib.admin import SimpleListFilter
from django.contrib.auth.models import Group
from django.utils.translation import ugettext as _
class GroupListFilter(SimpleListFilter):
title = _('group')
parameter_name = 'group'
def lookups(self, request, model_admin):
items =()
for group in Group.objects.all():
items += ((str(group.id), str(group.name),),)
return items
def queryset(self, request, queryset):
group_id = request.GET.get(self.parameter_name, None)
if group_id:
return queryset.filter(groups=group_id)
return queryset
from django.contrib import admin
from django.contrib.auth.admin import UserAdmin
from django.contrib.auth.models import User
class MyUserAdmin(UserAdmin):
list_filter = UserAdmin.list_filter + (GroupListFilter,)
admin.site.unregister(User)
admin.site.register(User, MyUserAdmin)
Các vấn đề liên quan
- 1. django: hiển thị số người dùng nhóm đếm trong quản trị
- 2. Trang quản trị Django Xoá 'Nhóm'
- 3. Bộ lọc danh sách quản trị Django
- 4. Quản trị Django - Vô hiệu hóa xóa người dùng
- 5. Django: Cách lọc Người dùng thuộc về một nhóm cụ thể
- 6. Mở rộng hồ sơ người dùng ở Django. Quản trị viên tạo người dùng
- 7. Nhiều người thuê, người dùng đa quản trị trong ActiveAdmin
- 8. Django limit_choices_to trên nhóm người dùng
- 9. Có cách nào để lọc một queryset trong quản trị django?
- 10. Làm cách nào để tùy chỉnh trang Quản trị viên người dùng trong Django CRUD?
- 11. Cách thêm nút bên cạnh nút Thêm Người dùng trong Trang web Quản trị Django
- 12. lọc lĩnh vực ForeignKey trong django quản trị
- 13. Sự cố với quản trị viên Django đăng ký người quản trị hồ sơ người dùng nội tuyến
- 14. Lọc theo phạm vi ngày tùy chỉnh trong quản trị Django
- 15. Loại trừ một trường trong quản trị django cho người dùng không phải là quản trị viên cấp cao
- 16. Cách buộc người dùng vào tài khoản Quản trị viên người dùng trong WinForms
- 17. Kết hợp người dùng và UserProfile trong quản trị
- 18. Giao diện 'quản trị' riêng biệt cho các loại người dùng khác nhau trong django
- 19. có được người dùng theo nhóm trong sharepoint
- 20. Mở rộng biểu mẫu người dùng mới, trong quản trị Django
- 21. Quản trị Django, lọc đối tượng cho formset nội tuyến
- 22. Quay lại nhóm quản trị
- 23. Người dùng ẩn danh theo dõi Django
- 24. SQLAlchemy: Cách nhóm theo hai trường và lọc theo ngày
- 25. Tại sao mật khẩu người dùng không bị bẻ khóa trong quản trị django?
- 26. Django: Lọc trường datetime theo * chỉ * giá trị năm?
- 27. Cho phép quản trị viên thêm người dùng với Devise
- 28. Thêm xác nhận hợp lệ cho người dùng quản trị django thêm các hình thức
- 29. Django - chỉ định người quản lý mô hình Django quản trị nên sử dụng
- 30. Django 1.5 rc1 quản trị biểu mẫu tạo người dùng với các trường tùy chỉnh
Rất tốt, cảm ơn! Nhưng nó hiển thị như "Theo tên" theo sau là danh sách các nhóm, mà là một chút khó hiểu, nó sẽ là tốt hơn nếu nó nói "Theo nhóm" – thnee
Tôi đồng ý với @thnee. Nó có thể đạt được như thế này 'list_filter = ('groups',)' – laltin