Model Forms not saving ManytoMany Field

Question:

here is my code. I am using Modelforms and Crispy forms library to generate form.
when I click form submit everything is saved, except Category(manytomanyfield), that I have to specify manually from admin panel.

NOTE: I FOUND SOME SOLUTIONS ONLINE to do form.save_m2m() but I get Object has no attribute save_m2m()

my modelform.

from django.forms import ModelForm
from .models import Article


class ArticleForm (ModelForm):
  class Meta:
    model = Article
    fields = '__all__'
    exclude = ('user',)

my views.

def create(request):

if request.method =="POST":
    form = ArticleForm(request.POST, request.FILES)
    if form.is_valid():
        form = form.save(commit=False)
        form.user = request.user
        
        return redirect('home')

form = ArticleForm()
context = {'form': form}

return render(request, 'article_form.html', context)

my template.

<form action="" enctype="multipart/form-data" method="post">
            {% csrf_token %}
            {{form|crispy}}
            <button type="submit" class="btn btn-primary">Submit</button>
        </form>
Asked By: Zaidan Chaudhary

||

Answers:

You’re overwriting form:

The code should be:

if form.is_valid():
    #form.save() returns a model instance, not another form
    article = form.save(commit=False) 
    article.user = request.user
    article.save()
    form.save_m2m()
...
Answered By: lucutzu33