from django import forms
from django.forms import widgets
class DomainForm(forms.ModelForm):
field2 = YourField(widget=widgets.CheckboxSelectMultiple)
class Meta:
model = Domain()
fields = ('field1', 'field2')
from django.forms import widgets
from django.contrib import admin
class MyModelAdmin(admin.ModelAdmin):
def formfield_for_manytomany(self, db_field, request=None, **kwargs):
"""
Get a form Field for a ManyToManyField.
"""
# If it uses an intermediary model, don't show field in admin.
if db_field.rel.through is not None:
return None
if db_field.name in self.raw_id_fields:
kwargs['widget'] = admin.widgets.ManyToManyRawIdWidget(db_field.rel)
kwargs['help_text'] = ''
elif db_field.name in (list(self.filter_vertical) + list(self.filter_horizontal)):
kwargs['widget'] = admin.widgets.FilteredSelectMultiple(db_field.verbose_name, (db_field.name in self.filter_vertical))
else:
kwargs['widget'] = widgets.CheckboxSelectMultiple()
kwargs['help_text'] = ''
return db_field.formfield(**kwargs)
它实际上在管理中默认使用模型表单。所以,你需要重写它。在
因此,在本例中,我覆盖了默认的FIELD2字段类型。在
准确地说,它是Django管理员选择在ManyToManyField中显示的widget。 在本例中,您觉得它的SelectMultiple小部件不太友好。在
很简单的一点是,您可以在使用自己的ModelForm时选择小部件。 但如果你想在Django Admin中那样做,你需要往返。看看这个。在
现在,在管理员py作为
^{pr2}$你现在会在DJango管理中看到复选框。当然,您需要一些CSS更改。在
我认为内置小部件
CheckboxSelectMultiple
可以满足您的需要。如果没有,你就必须创建你自己的小部件。documentation for widgets是一个很好的起点。最简单的方法是从Django源代码复制一个现有的小部件并对其进行修改。在相关问题 更多 >
编程相关推荐