了解Django的模型类

我是Python和Django的新手,我想了解Django的Model Class(以及一般的类)如何工作。

如果创建新模型:

from django.db import models   

class Book(models.Model): 
  title = models.CharField(max_length=200)
  author = models.CharField(max_length=200)

现在,您可以执行以下操作:

>>> from myapp.models import Book
>>> book = Book(title="a new book", author="bob")
>>> book.save()
>>> print book.title
a new book

太好了,它有效。但是Book类从Model类继承的方式有点令人困惑。似乎标题和作者充当实例变量,但查看类定义,似乎它们是静态的。

from django.db import models 

class Book(models.Model):

  def __init__(self, *args, **kwargs):
    self.title = models.Charfield(max_length=200)
    self.author = models.CharField(max_length=200)
    super(Book, self).__init__()

对我来说,这似乎是声明类的更直观的方法,但是当我运行迁移时,Django不会选择这些模式更改。我明白为什么这是行不通的,我只是不知道我理解为什么上面的方法的工作。

提前致谢。

丹尼尔·罗斯曼

这真的太复杂了,无法在此处回答问题。快速的答案是,所有这些都由元类完成,但是要获得完整的解释,您应该阅读Marty Alchin的书Pro Django

关键是,self.title例如,您不希望成为字段实例:您希望其成为标题名称的任何因此,(从很大程度上简化了)从数据库构造模型实例时,元类将遍历类级别的Field属性,并且对于每个属性,它将实例级属性设置为db列的值。当然,保存时它的作用相反。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

了解Django的模型类

来自分类Dev

Django模型管理员应该了解模型类吗?

来自分类Dev

Django模型。检索模型的类

来自分类Dev

django模型类总和

来自分类Dev

通过模型了解Django中的ManyToMany字段

来自分类Dev

Django了解嵌套模型上的uniq约束

来自分类Dev

了解 Django 基于类(DetailView 和 View)

来自分类Dev

Django模型派生类

来自分类Dev

访问Django模型的超类

来自分类Dev

导入Django的模型类-Python

来自分类Dev

Django模型派生类

来自分类Dev

访问Django模型的超类

来自分类Dev

Django从多个模型类继承

来自分类Dev

Django:从父模型类获取相关模型类

来自分类Dev

基于Django类的视图:了解视图类中的参数

来自分类Dev

将非模型类放在Django的位置

来自分类Dev

从基类创建Django代理模型的实例

来自分类Dev

Django模型类创建自己的依赖项

来自分类Dev

Django字段具有模型类的价值

来自分类Dev

Django模型:存储对未知类的引用

来自分类Dev

ModelForm没有指定模型类。Django的

来自分类Dev

ModelForm没有指定模型类。[django]

来自分类Dev

在Django模型中使用Python数据类

来自分类Dev

未指定ModelForm模型类Django错误

来自分类Dev

Django模型字段,用于存储函数或类

来自分类Dev

Django模型引用其他类的对象

来自分类Dev

在类之间链接Django模型属性

来自分类Dev

Django:访问模型元类值

来自分类Dev

从 Django 模型方法访问类变量