簡體   English   中英

從源代碼了解Django:通過models.CharField和form.CharField的字段屬性

[英]Understanding Django (from source code): attributes of field via models.CharField and forms.CharField

我想了解django.db.modelsdjango.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.FormViewviews中正確顯示帶有默認值“ 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.Fielddjango.forms.Field正是兩個不同的機器。 但是在現實生活中,我們仍然需要可以映射模型的表格。 為此,django通過傳遞模型名稱為我們提供了django模型形式的概念。

默認情況下,django modelforms顯示的名稱與django model相同,但是如果需要覆蓋名稱,可以通過在django modelforms中覆蓋__init() 來實現,以進一步闡明您的理解。

django的代碼庫已經開發,並且仍在不斷優化中。 學習的觀點令人欽佩,但陷入復雜性只是浪費效率,並且超出了被稱為快速應用程序開發技術的目的。

官方文檔中提供的所有內容都足夠自我和深度,可以幫助您獲得深刻的理解。 學習框架的唯一最佳方法是學習其錯誤消息,然后您將自動成為該框架的復雜者。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM