django两个m2m字段的一个小部件

时间:2015-03-12 23:33:06

标签: django django-widget

我的模型ModelFrom有两个很多字段,它们都是相同的模型,称之为ModelTo。

ModelFrom(models.Model):
    field_one = ManyToManyField(ModelTo)
    checked = ManyToManyField(ModelTo)

checked是第一个字段的子集。我已经在模型clean()和adminform clean()方法中正确验证了这一点,并更新了model :: save()来调用self.full_clean()。

理想情况下,我会有一个小部件,就像django.forms.SelectMultiple一样,但每个<option>内都有一个复选框。

目前的样子,我为每个领域都有一个这样的小部件: current look

我想将它们组合起来并有一个复选框或其他东西,这是我的unicode表示它看起来像什么

{[blah:2☐],[blah:1☑]}

列表中的值 - &gt;字段一设置。选中框 - &gt;检查已设置,因为它是field_one的子集。

我见过jQuery UI MultiSelect Widget,但似乎没有办法选择一个选项,但是没有勾选方框。

1 个答案:

答案 0 :(得分:0)

我无法直接回答我自己的问题,但与大多数问题一样,如果答案不可能,则可能存在潜在问题。

我不应该有两个many2many字段,而应该只为一个中间字段设置一个through属性。 像这样:

class IntermediateField(models.Model):
     checked = BooleanField()
     from = ForeignKey(ModelFrom)
     to = ForeignKey(ModelTo)  

ModelFrom(models.Model):
    field_one = ManyToManyField(ModelTo, through=IntermediateField)

然后,我们可以在ModelFrom admin中使用IntermediateField的内联,轻松选中框等