简体   繁体   中英

Using python properties in django models?

My problem relates to this question: 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

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.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM