Django模型的形式

时间:2009-11-08 20:39:55

标签: django forms widget

使用Django表单,您可以指定widget:

class LoginForm(forms.Form):
    email = forms.CharField(
        max_length = 30,
        widget = forms.TextInput(
            attrs = {'class':'text required email', 'id':'email'}))
    password = forms.CharField(
        max_length = 20,
        widget = forms.PasswordInput(
            attrs = {'class':'text required', 'id':'password', 'minlength':'4'}))

是否有可能在模特中做到这一点?

class Order(models.Model):
    name =              models.CharField(max_length = 256)
    phone =             models.CharField(max_length = 256)
    email =             models.CharField(max_length = 256)
    start =             models.CharField(max_length = 256)
    destination =           models.CharField(max_length = 256)
    size =              models.CharField(max_length = 256)

我喜欢在为模型创建表单时使用它(指定CSS类):

class OrderForm(ModelForm):
    class Meta:
        model = Order

提前致谢, 艾格。

2 个答案:

答案 0 :(得分:3)

您可以使用以下方法指定css类:

class IssueForm(forms.ModelForm):
    """Form for adding issues."""

    def __init__(self, *args, **kwargs):
        super(IssueForm, self).__init__(*args, **kwargs)
        self.fields['description'].widget.attrs['class'] = "span-3 last"

如果您需要更多,请告诉我 - 祝您好运!

答案 1 :(得分:2)

不,但您可以通过覆盖模型中的字段来重新定义窗口小部件。

另一种方法是实现__init__方法并更改现有字段中的小部件或attr。