2012-12-25 75 views
2

我已經創建了一些類模型:Django模塊形式定製領域

class Student(models.Model): 
    name = models.CharField(max_length=40) 
    last_name = models.CharFIeld(max_length=40) 
(...) 

,並在底部相同models.py文件我已經添加了對應於我的車​​型之一的一類,所以我可以創建表單:

class StudentForm(ModelForm): 
    class Meta: 
     model = Student 

如何自定義通過的ModelForm類創建表單域?我正在閱讀django文檔,我無法理解覆蓋默認類型部分。 例如,文檔,他們說這將工作:

class ArticleForm(ModelForm): 
    pub_date = DateField(label='Publication date') 

    class Meta: 
     model = Article 

,但是當我輸入我的價值觀它不工作。我不能確定我的標籤:

class StudentForm(ModelForm): 
    name = CharField(label='New label') 

    class Meta: 
     model = Student 

我是不是要像創建具有相同的字段forms.py文件作爲模型類,然後對其進行自定義?是否有可能使用模型形式更改單個字段的CSS屬性,如寬度,高度?

+0

請具體說明當你說它不工作時會發生什麼。例如,從你的代碼中,你不會在「class」define(line包含:name = ...)之後縮進一行,這會造成語法錯誤。 –

+0

不工作是例如我不能單獨使用CharField我需要添加models.CharField,但然後標籤不會改變,因爲models.CharField沒有標籤屬性。 runserver命令掛在驗證模型...沒有錯誤。我忘記了在這裏寫下我的問題的indendts,但是並沒有從django import形式的項目 – Chris

回答

4

表單字段使用差異庫來創建。您需要導入django.forms和使用form.XXX特定領域

from django import forms 


class StudentForm(ModelForm): 
    class Meta: 
     model = Student 

    subject = forms.CharField(label='New label') 
+1

- 這就是我所缺少的。謝謝 – Chris

1

爲了自定義模型表單域,您不必手動創建它。 Django的模型領域有特殊的屬性:

  • verbose_name(去外地的標籤)
  • help_text(以呈現爲場下面的附加說明默認)

因此,所有你需要的是:

class Student(models.Model): 
    name = models.CharField(max_length=40, 
          verbose_name="Student's Name", 
          help_text="Please tell me your name") # Optional 
    last_name = models.CharFIeld(max_length=40) 
    ... 

然後你不需要在模型中做任何定製。

請參閱:https://docs.djangoproject.com/en/dev/ref/models/fields/#verbose-name