Подтвердить что ты не робот

Как добавить данные в поле ManyToMany?

Я не могу найти его нигде, поэтому ваша помощь будет приятной для меня:) Вот это поле:

categories = models.ManyToManyField(fragmentCategory)

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]
4b9b3361

Ответ 2

В случае, если кто-то еще окажется здесь, пытаясь настроить административную форму Many2Many для сохранения, вы не можете вызвать 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 делает ManyToManyField.)