Использование свойств Python в моделях Django? - PullRequest
0 голосов
/ 01 февраля 2010

Моя проблема связана с этим вопросом: Порядок по умолчанию для элементов m2m по полям промежуточной модели в 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

Я использовал лучшее решение ответа, как вы видите здесь, однако оно сломало мою форму модели, основанную на групповой модели.

Когда я отправляю форму, я получаю _members в списке ошибок формы моей модели, поскольку поле является обязательным и больше не может отправлять формы на основе этой модели.

Лучший ответ в предыдущем вопросе предлагает способ имитации поведения поля с помощью свойства. Как бы я поступил так, чтобы полностью скрыть _members от формы модели?

Спасибо, Пит

1 Ответ

0 голосов
/ 01 февраля 2010

Если это одноразовое, вы можете исключить поле _members при создании модели:

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

Если вы делаете это много, вы можете рассмотреть создание подкласса ModelForm и переопределить метод init, чтобы автоматически исключать свойства, начинающиеся с подчеркивания.

...