Hello,

I have a modelform with a model which include a models.many_to_many field.
By default the modelform represents those m2m entries with a
multiplechoice field

http://docs.djangoproject.com/en/dev/topics/forms/modelforms/
example:
tag_set = forms.ModelMultipleChoiceField(queryset=Tag.objects.all())

1/ when I initialize my model form (form(instance=defaultinstance)), I
would like the m2m entries to
appear as a form.TextInput with default value of defaultinstance.tag_set.all()

2/ To save the tags, I have

class AssignmentEditForm(ModelForm):
[...]
    def save_m2m(self):
       tagNames = form.cleaned_data['tag_set'].split()
       for tagName in tagNames:
              tag, dummy = Tag.objects.get_or_create(name=tagName)
              self.__assignment.tag_set.add(tag)
   class Meta:
       MODEL = Assignment

        widgets = {
             'tagline' : forms.TextInput(attrs={'size':70}),
            'description' : forms.Textarea(attrs={'cols':80, 'rows':5}),
            'tag_set': forms.TextInput(attrs={'size':70}),
         }

How can I get the NEW instance in the save_m2m(self) for
self.__assignment.tag_set.add(tag) ?
(I had to overwrite save method as well with following
def save(self,commit=True):
         ''' Overwrite the default model save '''
        self.__assignment = super(AssignmentEditForm,self).save(commit=False)
        self.__assignment.save()
        self.save_m2m()

Is there a better way to do that?

--
Emmanuel Mayssat

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To post to this group, send email to django-us...@googlegroups.com.
To unsubscribe from this group, send email to 
django-users+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/django-users?hl=en.

Reply via email to