[英]Understanding Django (from source code): attributes of field via models.CharField and forms.CharField
我想了解django.db.models
和django.forms
如何在field
上一起工作。
考慮以下示例:
# models.py
from django.db import models
class Person(models.Model)
Telefon1 = models.CharField('Telefon', max_length=30, blank=True, null=True)
通過generic.edit.FormView
在views
中正確顯示帶有默認值“ Telefon”的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,因為該教程和文檔並不總是對我有用(特別是在這種情況下)。
談論django.db.models.Field
和django.forms.Field
正是兩個不同的機器。 但是在現實生活中,我們仍然需要可以映射模型的表格。 為此,django通過傳遞模型名稱為我們提供了django模型形式的概念。
默認情況下,django modelforms顯示的名稱與django model相同,但是如果需要覆蓋名稱,可以通過在django modelforms中覆蓋__init()
來實現,以進一步闡明您的理解。
django的代碼庫已經開發,並且仍在不斷優化中。 學習的觀點令人欽佩,但陷入復雜性只是浪費效率,並且超出了被稱為快速應用程序開發技術的目的。
官方文檔中提供的所有內容都足夠自我和深度,可以幫助您獲得深刻的理解。 學習框架的唯一最佳方法是學習其錯誤消息,然后您將自動成為該框架的復雜者。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.