Salvar M2M de um ModelForm na view (commit=False)

78 views
Skip to first unread message

Gileno Alves

unread,
Mar 11, 2012, 9:31:15 PM3/11/12
to django...@googlegroups.com
Esse não tópico não é de uma dúvida e sim de um aprendizado que é interessante deixar no grupo para caso de dúvidas posteriores, eu tivesse essa dúvida e só conseguir resolver quando fui ao código fonte do django.

Quando você tem um ModelForm que tem um campo M2M se na sua view quando você chamar o save do form passar como parâmetro do commit o valor False:

form.save(commit=False)

O django cria uma função chamada de save_m2m no form para que você possa salvar o relacionamento m2m. Isso é muito interessante pois quando você faz commit=False e depois usa a instancia do model assim:

instance = form.save(commit=False)
#..... alguma coisa ....
instance.save()

O m2m não é salvo, ai você teria que varrer a queryset m2m do seu Model, retirando os que não foram selecionados pelo usuário e adicionando os novos que foram selecionados (form.cleaned_data["campo_m2m"])

Caso este tipo de tópico não seja bem vindo me avisem que eu não posto mais, apenas postei porque achei fantástico o Django ter pensado nisso, poupa muito trabalho.

--
Gileno Filho, Web Developer

Gladson Simplicio

unread,
Mar 11, 2012, 11:43:02 PM3/11/12
to django...@googlegroups.com
Muito bom, interessante...

--
Django Brasil em Google Groups <http://groups.google.com.br/group/django-brasil>
Associe-se à Python Brasil e suporte nossa comunidade! <http://associacao.python.org.br/>

Mário Neto

unread,
Mar 12, 2012, 12:02:50 AM3/12/12
to django...@googlegroups.com
No meu ponto de vista esse tipo de tópico é muito bem vindo! =)
--
Att. Mário Araújo Chaves Neto
Programmer, Designer and U.I. Engineer

MBA in Design Digital - 2008 - FIC
Analysis and Systems Development - 2011 - Estácio
Design and Implementation of Internet Environments - 2003 - FIC

Reply all
Reply to author
Forward
0 new messages