代码之家  ›  专栏  ›  技术社区  ›  straykiwi

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

  •  1
  • straykiwi  · 技术社区  · 9 年前

    我的模型ModelFrom有两个多的字段,它们都属于同一个模型,称为ModelTo。

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

    checked是字段1的子集。我已经在modelclean()和adminformclean(()方法中正确验证了这一点,并更新了model::save()以调用self.full_clean()。

    理想情况下,我应该有一个小部件,很像django.forms.SelectMultiple,但每个小部件都有一个复选框 <option> .

    它目前看起来是什么样子,每个字段都有一个小部件: current look :

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

    {布拉赫:2],[布拉赫:1]}

    列表中的值->设置字段1。复选框->checked被设置为fieldone的子集。

    我见过jQueryUIMultiSelectWidget,但似乎没有一种方法可以选择一个选项,但不能选中该框。

    1 回复  |  直到 4 年前
        1
  •  0
  •   straykiwi    9 年前

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

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

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

    然后,我们可以在ModelFromadmin中为IntermediateField使用内联,轻松地选中框等

    推荐文章