繁体   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