2010-02-01 3 views
0

Моя проблема относится к этому вопросу: Default ordering for m2m items by intermediate model field in DjangoИспользование свойств python в моделях 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

Можете ли вы опубликовать, как выглядит ваша форма? Это может помочь нам сузить его. –

ответ

0

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

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

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

+0

Я вижу, что вы пытаетесь разобраться с ошибкой django. Я подозреваю, что свойство не то, что вы хотите, потому что ModelForms не знают, что такое свойство python. Чтобы на самом деле справиться с этим, вам может потребоваться добавить настраиваемое поле в модельную форму, а затем заполнить выбор членов, переопределив метод init, например, в этом примере: http://stackoverflow.com/questions/1387431/django- модель-ModelForm-хау к-получить динамико-выбор-в-choicefield – Sam

Смежные вопросы