文章分类 - Django Models
摘要:对网站的数据库作读写分离(Read/Write Splitting)可以提高性能,在Django中对此提供了支持,下面我们来简单看一下。注意,还需要运维人员作数据库的读写分离和数据同步。 配置数据库 我们知道在Django项目的settings中,可以配置数据库,除了默认的数据库,我在下面又加了一个
阅读全文
摘要:以下三个字段存储的内容分别对应 DateTimeField datetime() DateField date() TimeField time() auto_now和auto_now_add两者默认值都为False。 auto_now=Ture,字段保存时会自动保存当前时间,但要注意每次对其实例执
阅读全文
摘要:在Django中需要向数据库中插入多条数据(list)。使用传统方式每次save()的时候都会访问一次数据库,导致性能问题。 在django1.4以后加入了新的特性。使用django.db.models.query.QuerySet.bulk_create()批量创建对象,减少SQL查询次数。 改进
阅读全文
摘要:atomic(using=None, savepoint=True) Atomicity is the defining property of database transactions. atomic allows us to create a block of code within whic
阅读全文
摘要:通过queryset获取表名:object.model._meta.object_name 通过queryset获取字段对象并更新对象:object._meta.get_field, save_form_data
阅读全文
摘要:get_or_create update_or_create uuid是唯一值, defaults里面是需要更新或创建的字段。
阅读全文
摘要:obj.get_choice_display() Model: 默认展示: 使用了get_field_display: <body> <h2>欢迎登录!</h2> {% for course in courses %} <div>课程:{{ course.name }}</div> <div>难度:
阅读全文
摘要:我们可以将需要经常使用,或者需要进行跨表统计等操作时 我们可以自定义Model方法: 这样,可以在View或者HTML中直接使用该方法 示例:
阅读全文
摘要:relationships “backward” 如果模型I有一个ForeignKey,那么该ForeignKey 所指的模型II实例可以通过一个管理器返回前面有ForeignKey的模型I的所有实例。默认情况下,这个管理器的名字为foo_set,其中foo 是源模型的小写名称。该管理器返回的查询集
阅读全文
摘要:SQL Debug日志开启 LOGGING = { 'version': 1, 'disable_existing_loggers': False, 'handlers': { 'console':{ 'level':'DEBUG', 'class':'logging.StreamHandler',
阅读全文
摘要:Aggregate aggregate()是QuerySet 的一个终止子句,意思是说,它返回一个包含一些键值对的字典。键的名称是聚合值的标识符,值是计算出来的聚合值。键的名称是按照字段和聚合函数的名称自动生成出来的。如果你想要为聚合值指定一个名称,可以向聚合子句提供它。 如果你希望生成不止一个聚合
阅读全文
摘要:字段查找 字段查询是指如何指定SQL WHERE子句的内容. 它们通过查询集的: filter() get() exclude() 的关键字参数指定. exact 精确匹配。如果为比较提供的值为None,它将被解释为SQL NULL: 示例: SQL等价物: iexact 不区分大小写的精确匹配。
阅读全文
摘要:1、对象 filter(), all() 获取到的Queryset中的内容是 obj 2、字典 values() 获取到的Queryset中的内容是 字典 可以用通过 .items来获取key value 3、元组 values_list() 获取到的Queryset中的内容是 元组 可以通过下标的
阅读全文
摘要:QuerySet有很多API接口,比如常用的Iterable、exists()、len()、count()、切片、pickling、cache、repr()、list(). iterable: QuerySet是可迭代的,它在首次迭代查询集时执行实际的数据库查询。例如下面的语句会将数据库中所有Ent
阅读全文
摘要:单表查询 链式过滤 QeurySet的筛选结果本身还是QeurySet,所以可以将筛选语句链接在一起。像这样: >>> Entry.objects.filter( ... headline__startswith='What' ... ).exclude( ... pub_date__gte=dat
阅读全文
摘要:class Meta: Options.abstract 如果 abstract = True, 就表示模型是 抽象基类 (abstract base class). Options.db_table 该模型所用的数据表的名称: db_table = 'Students' db_table = 'S
阅读全文
摘要:抽象基类 当你想将一些共有信息放进其它一些model的时候,抽象化类是十分有用的。你编写完基类之后,在 Meta类中设置 abstract=True ,这个模型就不会被用来创建任何数据表。取而代之的是,当它被用来作为一个其他model的基类时,它的字段将被加入那些子类中。如果抽象基类和它的子类有相同
阅读全文
摘要:max_length CharField(和它的派生类)必须使用max_length 参数来指定VARCHAR 数据库字段的大小。 choices 它是一个可迭代的结构(比如,列表或是元组),由可迭代的二元组组成(比如[(A, B), (A, B) ...]),用来给这个字段提供选择项。如果设置了
阅读全文
摘要:Feild命名的限制 Django 对字段的命名只有两个限制: 字段的名称不能是Python 保留的关键字,因为这将导致一个Python 语法错误。例如: class Example(models.Model): pass = models.IntegerField() # 'pass' is a
阅读全文
摘要:示例: 有这样一个应用,它记录音乐家所属的音乐小组。我们可以用一个ManyToManyField 表示小组和成员之间的多对多关系。但是,有时你可能想知道更多成员关系的细节,比如成员是何时加入小组的。 对于这些情况,Django 允许你指定一个中介模型来定义多对多关系。 你可以将其他字段放在中介模型里
阅读全文