Có cách nào đơn giản để hiển thị ManyToManyField làm Hộp kiểm trong Quản trị Django không ?? Bất kỳ đề xuất?Hiển thị ManyToManyField làm Hộp kiểm trong Django Admin
Trả lời
Từ this answer nó có vẻ như nó có thể sử dụng ModelAdmin.formfield_overrides để ghi đè lên ManyToManyField sử dụng CheckBoxSelectMultiple:
from django.db import models
from django.contrib import admin
from django.forms import CheckboxSelectMultiple
class MyModelAdmin(admin.ModelAdmin):
formfield_overrides = {
models.ManyToManyField: {'widget': CheckboxSelectMultiple},
}
Tôi đã không thử nó và đang chỉ trích dẫn từ nguồn, nhưng có vẻ như đáng tin cậy. Chúc may mắn.
Warning: như @errx đúng chỉ ra, documentation nổi bật caveat sau:
Nếu bạn muốn sử dụng một widget tùy chỉnh với một lĩnh vực liên quan (ví dụ
ForeignKey
hoặc ManyToManyField), đảm bảo rằng bạn chưa bao gồm tên của trường đó trongraw_id_fields
hoặcradio_fields
.
formfield_overrides
sẽ không cho phép bạn thay đổi widget trên các lĩnh vực liên quan córaw_id_fields
hoặcradio_fields
bộ. Đó là vìraw_id_fields
vàradio_fields
ngụ ý các tiện ích tùy chỉnh của riêng mình.
có cảnh báo từ tài liệu django. Nếu bạn muốn sử dụng tiện ích tùy chỉnh có trường quan hệ (ví dụ: ForeignKey hoặc ManyToManyField), hãy đảm bảo bạn chưa bao gồm tên của trường đó trong raw_id_fields hoặc radio_fields. formfield_overrides sẽ không cho phép bạn thay đổi tiện ích con trên các trường quan hệ đã đặt raw_id_fields hoặc radio_fields. Đó là vì raw_id_fields và radio_fields ngụ ý các tiện ích tùy chỉnh của riêng chúng. – errx
Cảm ơn những người đứng đầu. Sẽ đặt cảnh báo trong câu trả lời. –
Tôi nghĩ không có cách nào đơn giản để thực hiện việc này. Bạn có thể cố gắng ghi đè lên lớp ModelAdmin nhưng đây không phải là cách đơn giản.
Nhưng bạn có thể sử dụng filter_horizontal hoặc filter_vertical thêm gần như chức năng tương tự
Đây là chắc chắn nhất có thể. Dưới đây là mã mà bạn có thể đặt trong lớp con ModelAdmin
:
def formfield_for_manytomany(self, db_field, request=None, **kwargs):
if db_field.name == 'your field name':
kwargs['widget'] = form_widgets.CheckboxSelectMultiple()
kwargs['help_text'] = ''
return db_field.formfield(**kwargs)
Điều này xuất phát từ việc nhìn vào mã quản trị.
Để ghi đè cho một trường duy nhất sau đây là hữu ích:
def get_form(self, request, obj=None, **kwargs):
form = super(VNodeAdmin, self).get_form(request, obj, **kwargs)
form.base_fields['node_type'].widget = forms.CheckboxSelectMultiple()
return form
- 1. nội dung hiển thị django của một manytomanyfield
- 2. Cách hiển thị hộp kiểm trong jquery.datatables?
- 3. Django Admin: Cần điều kiện hiển thị các trường
- 4. Hiển thị Nullable Bool làm Hộp kiểm
- 5. Django Admin: Nhiều-to-Nhiều listbox không hiển thị với một đường tham số
- 6. Django quản ManyToManyField
- 7. Làm cách nào để tạo biểu mẫu Django hiển thị nhãn hộp kiểm ở bên phải hộp kiểm?
- 8. WMD trong Django Admin?
- 9. django ManyToManyField và on_delete
- 10. Django: select_related với ManyToManyField
- 11. Django admin list_display newline
- 12. nhiều người trong danh sách hiển thị django
- 13. Cách hiển thị hộp kiểm được chọn trước trong android
- 14. Hiển thị boolean dưới dạng hộp kiểm trong Webgrid
- 15. Disqus bình luận kiểm duyệt bên trong Django Admin
- 16. Django của admin (& filter_vertical) không làm việc
- 17. tìm django/contrib/admin/templates
- 18. Hiển thị booleans trong Active Admin là 'Yes' và 'No'
- 19. mô hình không hiển thị trong quản trị django
- 20. Django Admin Fieldsets
- 21. Mô hình nhóm trong django admin
- 22. Sự cố hiển thị Android với hộp kiểm
- 23. Django Admin: làm thế nào để hiển thị các thuộc tính được xác định trên mô hình trong nội tuyến?
- 24. Các trường động trong Django Admin
- 25. bối rối về django ForeignKey, manytomanyfield, inlineformset_factories
- 26. Django - Hiển thị ImageField
- 27. Hiển thị-ẩn DIV dựa trên giá trị hộp kiểm
- 28. Hiển thị danh sách hộp kiểm thay vì chọn nhiều
- 29. django: sử dụng admin datepicker
- 30. Làm thế nào để lọc queryset trong changelist_view trong django admin?
Tôi sẽ đề nghị thay đổi câu trả lời được chấp nhận, để không nhầm lẫn du khách. – surfer190