Python Django admin many-to-many 多选框改成复选框

在django 的admin中,若有两张表为many-to-many的关系,则使用django model类里面的ManyToManyField了。并且可以选择自定义中间表,在ManyToManyField里面添加属性through=“中间表的model类”。嘿嘿,脱离话题了,下面进入主题吧。

models.py

class Person(models.Model):
    name = models.CharField(primary_key=True, max_length=128)
    desc = models.CharField(max_length=256)

    def __unicode__(self):
        return self.name
    class Meta:        
        db_table = u'person'

class Group(models.Model):
    name = models.CharField(max_length=128)
    members = models.ManyToManyField(Person, db_table='person_group')

    def __unicode__(self):
        return self.name
    class Meta:        
        db_table = u'group'

admin.py

class GroupForm(forms.ModelForm):
    members = forms.ModelMultipleChoiceField(widget=CheckboxSelectMultiple, queryset=Person.objects.all())
    
    class Meta:
        model = Group

class GroupAdmin(admin.ModelAdmin):
    form = GroupForm

下面是效果图:



个人认为比默认的多选框强,需要的就拿去吧。



版权声明:本文为l90z11原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。