2010-02-01 126 views
0

我的問題涉及到這樣一個問題:Default ordering for m2m items by intermediate model field in Django在Django模型中使用python屬性?

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,因爲該字段是必需的,不能再根據此模型提交表單。

上述問題中的最佳答案提示了一種模擬使用該屬性的字段行爲的方法。我將如何去做這個來完全隱藏模型表單中的成員?

感謝, 皮特

+1

鏈接到相關問題是很好的,但是如果你確實知道你有什麼,有什麼,以及你得到的錯誤是非常有用的。 – 2010-02-01 17:39:36

+0

你可以發佈你的表單的樣子嗎?這可能有助於我們縮小範圍。 – 2010-02-01 20:14:09

回答

0

如果它是一次性的,你可以在創建的ModelForm排除_members領域:

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 2010-02-01 19:22:51