是否可以在模型上设置字段大小?

时间:2011-07-18 18:41:40

标签: django django-models django-forms

是否可以在Model上编写字段大小?

这是我的 form.py 的一部分,我想在我的模型上做类似的事情: email = forms.EmailField(label =“Email”,widget = forms.TextInput(attrs = {'size':'60',)

我无法在 Form 上定义此属性,因为我使用了类关系。如果我在我的父类上声明“email”并且我的子类获胜使用此字段,它将显示它(模型排除不起作用,因为在父项上声明了“email”属性)

models.py

class UserProfile(models.Model):
   nome = models.CharField('Nome Completo',max_length=100 ) 
   endereco = models.CharField('Endereço',max_length=100)
   ...

forms.py

class **cadastrousuarioForm**(formulariocadastrocompleto):   
   nome = forms.CharField(label = 'Nome',widget=forms.TextInput(attrs={'size':'30','maxlength':'100'}))
   ...

class atualizacaoousuarioForm(**cadastrousuarioForm**):   

    class Meta (cadastrousuarioForm):
        model = UserProfile
        fields = ("endereco",)   
        exclude = ("nome")
        ...

1 个答案:

答案 0 :(得分:2)

不,无法在模型上定义字段大小。您描述的问题排除在父项上定义字段时不对子项进行操作实际上是Django中的一个开放错误。从某种意义上说,你的挫败感是有道理的,但遗憾的是,你没有多少选择。

您可能想尝试混合:

class MyFieldMixIn(forms.ModelForm):
    my_field = forms.CharField(label = 'Nome',widget=forms.TextInput(attrs={'size':'30','maxlength':'100'}))

class ParentForm(forms.ModelForm):
    # Common functionality, fields, etc. here

class ReplacementParentForm(ParentForm, MyFieldMixIn):
    pass

class ChildForm(ParentForm):
    # Child-specific stuff here

然后,您使用替换代替使用父窗体,因此您只能在该窗体上获取该字段。