python - Django ModelForm ManyToManyField isn't able to update selected values -


i building first project in django 1.8 python 3.4. have following model called lid in models.py:

class lid(models.model):     ...     vereniging = models.manytomanyfield(vereniging, blank=true) 

i use following modelform, forms.py

class lidform(forms.modelform):      class meta:         model = lid         exclude = [] 

when use modelform create form make new object, multiple select box appears , able select multipe vereniging objects. view in views.py:

def add_lid(request):     if request.method == 'post':         form = lidform(request.post, request.files)         if form.is_valid():             form.save()             messages.success(request, 'succes.')             return httpresponseredirect(reverse('leden:home'))     else:         form = lidform()     return render(request, 'leden/lid/addlid.html', {'formset': form}) 

when want edit objects however, not able change selected selected vereniging objects.

def edit_lid(request, lid_id):     lid = get_object_or_404(lid, pk=lid_id)     if request.method == 'post':         form = lidform(request.post, request.files, instance=lid)         if form.is_valid():             nieuwlid = form.save(commit=false)             nieuwlid.inschrijving_oras = lid.inschrijving_oras             nieuwlid.save()             messages.success(request, 'success.')             return httpresponseredirect(reverse('leden:lid', kwargs={'lid_id': lid_id}))     else:         form = lidform(instance=lid)     return render(request, 'leden/lid/editlid.html', {'formset': form, 'lid': lid}) 

so problem: when using modelform, able set manytomany relationships when creating object. not able update these m2m relationships. know doing wrong?

use save_m2m(). the docs:

another side effect of using commit=false seen when model has many-to-many relation model. if model has many-to-many relation , specify commit=false when save form, django cannot save form data many-to-many relation. because isn’t possible save many-to-many data instance until instance exists in database.

to work around problem, every time save form using commit=false, django adds save_m2m() method modelform subclass. after you’ve manually saved instance produced form, can invoke save_m2m() save many-to-many form data.


Comments

Popular posts from this blog

c# - Validate object ID from GET to POST -

node.js - Custom Model Validator SailsJS -

php - Find a regex to take part of Email -