2012-02-10 54 views
2

的Django 1.3:的Django的ModelForm排除領域仍顯示

我有我的ModelForm排除的領域,它仍然顯示了建設有.as_table(),as_p()方法的形式時,等

我已經在模板文件和shell中嘗試過了,排除字段顯示在排除變量中,但似乎沒有影響。

型號:

class UserTrans(models.Model): 
    usertransid = models.AutoField(primary_key=True) 
    userid = models.ForeignKey(User, db_column='userid') 
    transdate = models.DateField(verbose_name="Date") 
    data = models.DecimalField(max_digits=15, decimal_places=2) 
    class Meta: 
     db_table = u'usertrans' 


class TransForm(ModelForm): 
    class Meta: 
     model=UserTrans 
     exclude = ('userid',) 

當我打開外殼,並嘗試:

x=TransForm() 
x.as_table() 

或模板

{{ form.as_table }} or 
{{ form.as_p }} 

它沿着顯示了用戶ID字段的其餘部分領域。 如果我嘗試x.exclude它顯示我('userid',),所以我知道語法是正確的。

有什麼想法?

+0

您是否嘗試排除其他字段,如數據?那樣有用嗎? – Jingo 2012-02-10 13:35:10

回答

0

我相當肯定還有別的事情沒有在你的代碼中顯示。然而,這是一個黑客。給你的模型一個__init__,其中你從窗體的fields屬性(這是一個字典)中刪除'userid'。

+0

我還沒有弄明白,但是當我將每件作品單獨運行在外殼中時,它確實有效。但是當它們一起運行時它不會。所以它必須是我的代碼中的東西。 – szacks 2012-02-10 13:39:02

+0

@ user1201972:你試過我的建議嗎? – Marcin 2012-02-10 14:04:51

+0

不,我現在正在學習django,不想爲文檔中描述的應該使用的內容使用解決方法。在這一點上,我更願意弄清楚我的代碼中的錯誤在哪裏。 – szacks 2012-02-12 07:25:38