views:

56

answers:

1

My problem relates to this question: http://stackoverflow.com/questions/1390556/default-ordering-for-m2m-items-by-intermediate-model-field-in-django

class Group(models.Model):
   name = models.CharField(max_length=128)
   _members = models.ManyToManyField(Person, through='Membership')
   @property
   def members(self):
       return self._members.order_by('membership__date_joined')

   def __unicode__(self):
       return self.name

I used the best answer's solution as you see here, however, it broke my model form that's based on the group model.

When I submit the form, I get _members is required in my model form's error list since the field is required and can no longer submit forms based on this model.

The best answer in the prior question suggests a way to mimic the behavior of the field using the property. How would I go about doing this to completely hide _members from the model form?

Thanks, Pete

A: 

If it's a one-off, you can exclude the _members field when you create the modelform:

class GroupForm(ModelForm):
    class Meta:
        model=Group
        exclude = {'_members',}

If you do this a lot, you might consider creating a subclass of ModelForm and override the init method to automatically exclude properties starting with an underscore.

Sam
I see that you're trying to deal with a django bug. I suspect that a property is not what you want because ModelForms have no idea what a python property is. To actually deal with this, you may need to add a custom field to the modelform and then populate the members choices by overriding the init method, such as in this example:http://stackoverflow.com/questions/1387431/django-model-modelform-how-to-get-dynamic-choices-in-choicefield
Sam