是否有一种简单的方法将ManyToManyField显示为Django Admin中的复选框?有什么建议么?在Django Admin中显示ManyToManyField为复选框
回答
从this answer现在看来似乎是可以使用ModelAdmin.formfield_overrides覆盖ManyToManyField使用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},
}
我还没有尝试过了,我只是从源报价,但它似乎也合情合理。祝你好运。
警告:为@errx正确地指出的那样,documentation亮点如下警告:
如果你想使用自定义部件 有关系字段(即
ForeignKey
或ManyToManyField ),请确保您 未在raw_id_fields
或radio_fields
中包含该字段的名称。
formfield_overrides
不会让你 改变有raw_id_fields
或radio_fields
组关系领域 小部件。这是因为raw_id_fields
和radio_fields
意味着 自己的自定义小部件。
django文档有警告。 如果要使用具有关系字段的自定义小部件(即ForeignKey或ManyToManyField),请确保您未在raw_id_fields或radio_fields中包含该字段的名称。 formfield_overrides不会让您更改设置了raw_id_fields或radio_fields的关系字段上的窗口小部件。这是因为raw_id_fields和radio_fields意味着它们自己的自定义小部件。 – errx 2011-01-24 17:22:27
我认为没有简单的方法来做到这一点。您可以尝试重写ModelAdmin类,但这不是一种“简单”的方式。
但是你可以用filter_horizontal或filter_vertical增加几乎类似的功能
这肯定是可以的。这里是你可以在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)
这是从寻找到管理代码的。
要覆盖下面的一个字段是有用的:
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. 通过Django admin在ManyToManyField中添加值
- 2. 在Django中有没有办法显示选择为复选框?
- 3. Django:在模板中显示ManyToManyField?
- 4. 在Django的模板中显示ManyToManyField
- 5. django显示内容manytomanyfield
- 6. Django Admin,自定义权限复选框
- 7. Django:AJAX ManyToManyField in admin
- 8. 显示选中元素为复选框的复选框
- 9. Django表单:复选框无值显示
- 10. 在django中显示文件大小admin
- 11. 如何在Django Admin中显示评论?
- 12. Django admin raw_id_fields表格显示
- 13. 复选框未选中,但选中的复选框的内容显示为
- 14. 如何在django-admin中显示外键的选择?
- 15. Django的ManyToManyField显示蛞蝓的标签
- 16. 在Django中使BooleanField显示一个更大的复选框
- 17. 如何在Django Admin中访问ManyToManyField的两个方向?
- 18. 带有复选框的ListView - 为什么复选框不显示?
- 19. 在Jquery中勾选复选框时显示提示框
- 20. 在复选框中显示mysql数据
- 21. 在SQL Server 2008中显示复选框
- 22. 在Flex DataGrid中显示复选框列
- 23. 在apex5.0中显示/隐藏复选框
- 24. 获取数据显示在django admin change_list
- 25. 模型没有显示在Django上admin
- 26. 如果未选中复选框,则不显示复选框值
- 27. Django ManyToManyField不突出显示选定的项目
- 28. 角显示选中复选框过滤
- 29. 显示一个复选框为真值
- 30. 复选框被选中显示错误
我建议改变公认的答案,以便不混淆游客。 – surfer190 2018-01-04 09:26:18