覆盖Django ModelForm字段时出错

时间:2012-11-19 12:16:26

标签: django django-forms

当我尝试覆盖Django ModelForm字段时,我遇到了麻烦。

我的models.py是这样的:

from django.db import models

class CadastroParticipantes(models.Model):
    nome = models.CharField(max_length=50)
    sobrenome = models.CharField(max_length=100)
    cpf = models.CharField(max_length=14)
    email = models.EmailField(max_length=100)
    num_cartas_solicitadas = models.IntegerField(default=0)

    def __unicode__(self):
        return self.email

我的forms.py是这样的:

from django.forms import ModelForm
from models import *

class FormCadastroParticipante(ModelForm):
    class Meta:
        model = CadastroParticipantes
        fields = ('nome', 'sobrenome', 'cpf', 'email')
        exclude=('num_cartas_solicitadas')
        widgets = { 'nome' : attrs={'title': 'Seu primeiro nome.'}}

当我运行服务器并尝试访问时,我收到此消息:

**

SyntaxError at /
invalid syntax (forms.py, line 9)

**

有人可以帮我这个吗?

提前感谢所有人! (Y)

2 个答案:

答案 0 :(得分:2)

您忘记指定窗口小部件类。它应该是这样的:

from django.forms.widgets import TextInput

class FormCadastroParticipante(ModelForm):
    class Meta:
        model = CadastroParticipantes
        fields = ('nome', 'sobrenome', 'cpf', 'email')
        exclude=('num_cartas_solicitadas', )
        widgets = { 'nome' : TextInput(attrs={'title': 'Seu primeiro nome.'}), }

TextInput更改为所需的窗口小部件类。另请注意exclude类中的Meta属性接受列表,如果只有一个列表成员,请不要忘记尾随逗号。

答案 1 :(得分:0)

为什么不在Meta类之外定义attrs={'title': 'Seu primeiro nome.'}然后你可以说widgets = { 'nome' : attrs}