使用Inline ModelAdmin在多对多字段上单选按钮

时间:2013-06-20 01:39:12

标签: python django django-admin

见下面的情景:

class Account(model.Model):
    acc_name = models.CharField(max_length=50)


class Person(model.Model):
    accounts = models.ManyToManyField(Account)


class Message(model.Model):
    person = models.ForeignKey(Person)
    msg = models.CharField(max_length=500)

现在我在我的admin.py中使用InineModelAdmin。所以它看起来像这样:

class Account(admin.ModelAdmin):
    ...
    some code
    ...

admin.site.register(Account, AccountAdmin)


class MessageInLine(admin.StackedInline):
    model = Message


class PersonAdmin(admin.Modeladmin):
    inlines = [MessageInLine]


admin.site.register(Person, PersonAdmin)

因此,Message ForeignKeyPerson Person Many-To-Many Account Django-admin Person

现在在Message,我添加了Person,它显然提供了CTRLradio_button的组件。现在,帐户位于列表中,需要通过按住PersonAdmin来选择帐户。我想使用radio_fields = {"accounts":admin.VERTICAL} 来选择多个按钮以便更快地进行选择。我怎么能这样做?

编辑:

我尝试在ForeignKey内使用radio_field:

Choices Set

但它给了我一个错误,说明它是{{1}}还是{{1}},所以很明显这不起作用。有办法解决这个问题吗?

1 个答案:

答案 0 :(得分:2)

来自this Answer似乎有一种方法可以使用CheckboxSelectMultiple

from django.forms.widgets import CheckboxSelectMultiple

class PersonAdmin(admin.ModelAdmin):
    inlines = [MessageInLine]
    formfield_overrides = {
        models.ManyToManyField: {'widget': CheckboxSelectMultiple},
    }

请阅读另一个问题