这是新的,并试图学习python和django。我会切入正确的追逐。我正在阅读主站点上的django教程,我发现你可以在django中设置一个数据库,其中包含类似这里给出的类变量
from django.db import models
class Poll(models.Model):
question = models.CharField(max_length=200)
pub_date = models.DateTimeField('date published')
在本教程的后面,使用
创建一个Poll对象p = Poll(question="What's new?", pub_date=timezone.now())
我的问题是:看起来字符串是使用命名参数传递的,但在类中,这些似乎是使用models
构造的对象。那么django如何转换字符串,"什么是新的?",成为一个问题对象?
答案 0 :(得分:5)
定义模型类时,您只需为Django定义模型模式。 Django使用此信息创建一个表并保存您的对象。所以,当你说:
question = models.CharField(max_length=200)
在数据库中创建一个文本字段,Poll对象将有一个包含字符串的问题字段。
答案 1 :(得分:5)
诀窍是question
和pub_date
不是典型的对象属性:它们是类属性。 Django使用它们来理解你希望模型看起来像什么。
稍后,当您创建扩展Poll
的{{1}}类时,Django会查看models.Model
和question
类属性,并创建一个将它们存储为<的对象strong>对象属性。
例如,让我们尝试创建自己的ORM:
pub_date
Django是如何做到的。
答案 2 :(得分:2)
它不会将其转换为任何内容,因为从提供的Poll
类中,question
被定义为CharField
(文本)而不是对象。 Django不会做任何魔术!