2012-02-10 40 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