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

如何将数据添加到多个字段中?

  •  53
  • AbstractProblemFactory  · 技术社区  · 15 年前

    我在任何地方都找不到它,所以您的帮助对我来说将是很好的:)这是该字段:

    categories = models.ManyToManyField(fragmentCategory)
    

    碎片类别:

    class fragmentCategory(models.Model):
    
            CATEGORY_CHOICES = (
                            ('val1', 'value1'),
                            ('val2', 'value2'),
                            ('val3', 'value3'),
                            )
    
            name = models.CharField(max_length=20, choices=CATEGORY_CHOICES)
    

    <input type="checkbox" name="val1" />
    <input type="checkbox" name="val2" />
    <input type="checkbox" name="val3" />
    

    我试过这样的方法:

    categories = fragmentCategory.objects.get(id=1),
    

    categories = [1,2]
    
    1 回复  |  直到 6 年前
        1
  •  164
  •   Daniel Roseman    15 年前

    这里有一整页的Django文档 devoted to this

    正如该页所述,您需要执行以下操作:

    my_obj.categories.add(fragmentCategory.objects.get(id=1))
    

    my_obj.categories.create(name='val1')
    
        2
  •  6
  •   Chris    5 年前

    如果其他人最终在这里努力定制管理员表单的许多保存行为,您不能打电话 self.instance.my_m2m.add(obj) ModelForm.save 凌驾 ModelForm.save 稍后从中填充m2m self.cleaned_data['my_m2m'] 这将覆盖您的更改。相反,请致电:

    my_m2ms = list(self.cleaned_data['my_m2ms'])
    my_m2ms.extend(my_custom_new_m2ms)
    self.cleaned_data['my_m2ms'] = my_m2ms
    

    (可以将传入的QuerySet转换为一个列表- ManyToManyField