2014-12-02 47 views
0

我想了解django.db.modelsdjango.forms如何在field上一起工作。正確views經由generic.edit.FormView瞭解Django(源代碼):字段屬性通過models.CharField和forms.CharField

# models.py 
from django.db import models 
class Person(models.Model) 
    Telefon1 = models.CharField('Telefon', max_length=30, blank=True, null=True) 

顯示錶單字段中的HTML,缺省值爲「電話」:

考慮下面這個例子。爲了關閉自動完成的功能我添加以下內容:

# forms.py 
from django import forms 
class ContactForm(forms.ModelsForm): 
    Telefon1 = forms.CharField(widget=forms.TextInput(attrs={'autocomplete':'off'})) 

場然後用automplete:off正確渲染。但是,字段的名稱回落到models名稱:Telefon1

所以問題1:如何確保在models定義的默認名稱被穿過或做我必須重新定義名稱與forms.CharField(widget=...
問題2:如何找到讀取源代碼的答案?我通過閱讀site-packages\django\forms\widget.py開始,其中不包括答案或我不明白。

我想通過源代碼學習和理解Django,因爲本教程和文檔並不總是適用於我(特別是在這種情況下)。

+0

閱讀源代碼不是學習框架的好方法。 Django在開放源代碼世界中擁有一些最好的文檔,還有整個互聯網充滿了第三方教程;你應該從那裏開始。 – 2014-12-02 11:17:19

回答

1

談到django.db.models.Fielddjango.forms.Field恰好是兩個不同的機器。但仍然在現實生活中,我們需要那些需要映射模型的表單。爲了達到這個目的,django向我們提供了我們通過傳遞模型名稱來創建的django模型的概念。

默認的Django modelforms顯示相同的名稱Django模型的,但如果你需要重寫的名字,你可以通過在here還規定,進一步明確您的理解Django的modelforms覆蓋__init()

django的代碼庫已經開發出來,並且仍在開發中,以達到優化的程度。學習的重點是非常令人欽佩,但是陷入複雜性只是浪費有效性,並且被稱爲快速應用程序開發技術的目的。

無論在官方文檔中給出的是足夠自足和足夠深的,以幫助您獲得很大的理解。學習框架的唯一最好的方法是學習它的錯誤消息,然後你將自動成爲這個框架的複雜性的主人。