Nie mogę go nigdzie znaleźć, więc twoja pomoc będzie dla mnie miła :) Oto pole:
categories = models.ManyToManyField(fragmentCategory)
Kategoria fragmentu:
class fragmentCategory(models.Model):
CATEGORY_CHOICES = (
('val1', 'value1'),
('val2', 'value2'),
('val3', 'value3'),
)
name = models.CharField(max_length=20, choices=CATEGORY_CHOICES)
Oto formularz do wysłania:
<input type="checkbox" name="val1" />
<input type="checkbox" name="val2" />
<input type="checkbox" name="val3" />
Próbowałem czegoś takiego:
categories = fragmentCategory.objects.get(id=1),
Lub:
categories = [1,2]
django
django-models
IProblemFactory
źródło
źródło
my_obj.save()
aby zapisać aktualizację, czy dzieje się to automatycznie?python manage.py shell
.Na wypadek, gdyby ktoś inny skończył tutaj, walcząc z dostosowaniem formularza administratora Many2Many zachowania oszczędzającego, nie możesz wywołać
self.instance.my_m2m.add(obj)
swojegoModelForm.save
override, ponieważModelForm.save
później zapełnia twój m2m, zself.cleaned_data['my_m2m']
którego nadpisuje twoje zmiany. Zamiast tego zadzwoń:my_m2ms = list(self.cleaned_data['my_m2ms']) my_m2ms.extend(my_custom_new_m2ms) self.cleaned_data['my_m2ms'] = my_m2ms
(Dobrze jest przekonwertować przychodzące QuerySet na listę - i
ManyToManyField
tak to robi.)źródło