Hi, What you want to do here is use a Django "Formset" which contains your ModelForms. Since you want to show one form per person regardless of whether they are a member or not we can't use the modelformset_factory() and will have to do some manipulation of the initial data using the formset_factory() function instead. I haven't actually run and tested the code below (user beware) but you'll need to do something similar in order to do what you're describing.
See: http://docs.djangoproject.com/en/dev/topics/forms/formsets/ http://docs.djangoproject.com/en/dev/topics/forms/modelforms/#model-formsets Using the Membership form (I called it MembershipForm) from the previous poster: from django.forms.models import formset_factory def myview(request, group_id): group = Group.objects.get(pk=group_id) MembershipFormset = formset_factory(form=MembershipForm, extra=0) if request.method == 'POST': formset = MembershipFormset(request.POST) if formset.is_valid(): # since the formset itself isn't a ModelFormset # we need to loop over the individual ModelForms # and save() them. for form in formset.forms: form.save() # Do something else: # Make a person_id to membership mapping. memberships = dict(map(lambda m: (m.person_id, m), groups.membership_set.all())) initial = {} We need to order by pk (or some other field) here so that the form indexes match. for i,person in enumerate(Person.objects.all().order_by("pk")): prefix = form.get_default_prefix() membership = memberships.get(person.pk, None) # Here we create the initial data. # Add data for the each initialized form here. # initial data is needed for every person in order # to set the number of forms. initial.update({ '%s-%s-person' % (prefix, i): person if membership else None, '%s-%s-date_joined' % (prefix, i): membership.date_joined if membership else None, }) formset = MembershipFormset(initial=initial) # do something On Wed, Jan 26, 2011 at 8:46 AM, aa56280 <aa56...@gmail.com> wrote: >> In your case it would become something like: >> >> class Membership(ModelForm): >> class Meta: >> model = Membership >> fields = ('person', 'date_joined') >> widgets = { >> 'person' : CheckBox(), >> 'date_joined': TextInput(), >> } > > I need a form for each person though because a Group could have many > members. > > -- > You received this message because you are subscribed to the Google Groups > "Django users" group. > To post to this group, send email to django-users@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. > > -- Ian http://www.ianlewis.org/ -- You received this message because you are subscribed to the Google Groups "Django users" group. To post to this group, send email to django-users@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.