用于两个 m2m 字段的 django 一个小部件
django one widget for two m2m fields
我的模型 ModelFrom 有两个 manytomany 字段,它们都指向同一个模型,称之为 ModelTo。
ModelFrom(models.Model):
field_one = ManyToManyField(ModelTo)
checked = ManyToManyField(ModelTo)
checked 是字段 1 的子集。我已经在模型 clean() 和 adminform clean() 方法中正确验证了这一点,并更新了 model::save() 以调用 self.full_clean().
理想情况下,我会拥有一个小部件,很像 django.forms.SelectMultiple,但每个 <option>
中都有一个复选框。
它目前的样子,我有每个字段的这些小部件之一:
:
我想将它们结合起来并有一个复选框或其他东西,这是我对它的外观的 unicode 表示
{ [ blah: 2 ☐] , [blah: 1 ☑] }
列表中的值 -> 字段一已设置。选中框 -> 已选中,因为它是 field_one.
的子集
我看过 jQuery UI MultiSelect 小部件,但似乎没有办法能够 select 一个选项,但不选中该框。
我无法直接回答我自己的问题,但像大多数问题一样,如果无法回答则可能存在潜在问题。
我不应该有两个 many2many 字段,而应该只有一个,设置通过 属性 作为中间字段。
像这样:
class IntermediateField(models.Model):
checked = BooleanField()
from = ForeignKey(ModelFrom)
to = ForeignKey(ModelTo)
ModelFrom(models.Model):
field_one = ManyToManyField(ModelTo, through=IntermediateField)
然后,我们可以在 ModelFrom admin 中为 IntermediateField 使用内联,轻松选中复选框等
我的模型 ModelFrom 有两个 manytomany 字段,它们都指向同一个模型,称之为 ModelTo。
ModelFrom(models.Model):
field_one = ManyToManyField(ModelTo)
checked = ManyToManyField(ModelTo)
checked 是字段 1 的子集。我已经在模型 clean() 和 adminform clean() 方法中正确验证了这一点,并更新了 model::save() 以调用 self.full_clean().
理想情况下,我会拥有一个小部件,很像 django.forms.SelectMultiple,但每个 <option>
中都有一个复选框。
它目前的样子,我有每个字段的这些小部件之一:
我想将它们结合起来并有一个复选框或其他东西,这是我对它的外观的 unicode 表示
{ [ blah: 2 ☐] , [blah: 1 ☑] }
列表中的值 -> 字段一已设置。选中框 -> 已选中,因为它是 field_one.
的子集我看过 jQuery UI MultiSelect 小部件,但似乎没有办法能够 select 一个选项,但不选中该框。
我无法直接回答我自己的问题,但像大多数问题一样,如果无法回答则可能存在潜在问题。
我不应该有两个 many2many 字段,而应该只有一个,设置通过 属性 作为中间字段。 像这样:
class IntermediateField(models.Model):
checked = BooleanField()
from = ForeignKey(ModelFrom)
to = ForeignKey(ModelTo)
ModelFrom(models.Model):
field_one = ManyToManyField(ModelTo, through=IntermediateField)
然后,我们可以在 ModelFrom admin 中为 IntermediateField 使用内联,轻松选中复选框等