Diango Model API
1. Model
a) 实体类,存放数据,相当于表或映射表.
b) django.db.models.Model的子类.
c) 每一个属性相当于表字段或映射表字段.
示例:
Person 模型,他有名和姓.
from django.db import models
class Person(models.Model):
first_name = models.CharField(max_length=30)
last_name = models.CharField(max_length=30)
那么,对应的表SCHEMA:
CREATE TABLE myapp_person (
"id" serial NOT NULL PRIMARY KEY,
"first_name" varchar(30) NOT NULL,
"last_name" varchar(30) NOT NULL
);
问题1: 如何修改SCHEMA的表名? 如何指定主键?
class Person(models.Model):
class Meta:
db_table = 'myperson'
first_name = models.CharField(primary_key=True,max_length=30)
last_name = models.CharField(max_length=30)
模型创建完好,通过settings.py通知Django:
INSTALLED_APPS = (
#...
'mysite.person',
#...
)
然后同步模型到数据库:
{工程目录}/{应用目录} > manage.py syncdb
2. Field
a) 字段类必须是Field的子类
b) 支持的字段类型有:
CharField DateField IntegerField AutoField FloatField DateTimeField DecimalField EmailField FileField FilePathField ImageField IPAddressField URLField TextField XMLField
ForeignKey ManyToManyField OneToOneField
c) 每个字段对应一个表单控件类型<input type="text" />
d)
字段不能继承
3. Model 方法
class Model(**kwargs)
save(self, *args, **kwargs)
get_absolute_url()
get_FOO_display()
Model.__unicode__()
Model.delete([using=DEFAULT_DB_ALIAS])
Model.pk
Model.full_clean(exclude=None) # 验证字段
Model.clean() # 验证约束
RelatedManager # 外键和多对多关系级联
Manager # 继承关系管理
4. 执行自定义SQL
a) 使用Manager.raw()
Manager.raw(raw_query, params=None, translations=None)
>>> for p in Person.objects.raw('SELECT * FROM myapp_person'):
... print p
b) 直接执行SQL
commit_on_success
def my_custom_sql_view(request, value):
from django.db import connection, transaction
cursor = connection.cursor()
# Data modifying operation
cursor.execute("UPDATE bar SET foo = 1 WHERE baz = %s", [value])
# 事务
transaction.set_dirty()
# Data retrieval operation. This doesn't dirty the transaction,
# so no call to set_dirty() is required.
cursor.execute("SELECT foo FROM bar WHERE baz = %s", [value])
row = cursor.fetchone()
return render_to_response('template.html', {'row': row})
5.
查询数据:
one_entry = Entry.objects.get(pk=1)
all_entries = Entry.objects.all()
过滤器:
Entry.objects.filter(pub_date__year=2006)
Q object
6. 删除:
e.delete()
7. 更新:
update
8. 小结:
Model 模型重要的模块或类:
Models
Field
Manager
QuerySet
Q
Filter
Exclude
9. Django 支持的数据库:
PostgreSQL 8.2 to 8.2.4
MySQL 4.1 5.0
SQLite
Sybase SQL Anywhere
IBM DB2
Microsoft SQL Server 2005
Firebird
ODBC
分享到:
相关推荐
Swapper是非官方的API,用于但功能非常强大的Django功能:可交换模型。 Swapper有助于在您自己的可重用应用程序中实现任意可交换模型。 动机 假设您的可重用应用程序具有两个相关的表: from django . db import ...
启发自Django-Admin,并且拥有不逊色于Django-Admin的强大功能. 关键特性 性能极高:基于FastAPI, 可享受FastAPI的全部优势。 效率更快:完善的编码类型提示, 代码可重用性更高. 支持异步和同步混合编写: ORM基于...
python库。 资源全名:django_json_api_model-0.0.5-py3-none-any.whl
启发自Django-Admin,并且拥有不逊色于Django-Admin的强大功能。是一个基于fastapi+amis开发的高性能并且高效率 web-admin 框架,使用 Python 3.7+ 并基于标准的 Python 类型提示. fastapi-amis-admin开发的初衷是...
参考指南 包含 API 和 Django 各个工作机制方面的技术参考。它们介绍了 Django 是如何工作,如何被使用的。不过,你得先对关键字的概念有一定理解。 操作指南 是一份目录。它们以排列好的关键问题和用例的方式指导你...
从内部来看,每个session都只是一个普通的Django model(在 django.contrib.sessions.models 中定义)。每个session都由一个随机的32字节哈希串来标识,并存储于cookie中。 因为它是一个标准的模型,所以你可以使用...
You’ll discover API design principles and best practices, and understand the need for asynchronous workflows. During this journey, you’ll study popular Python code testing techniques in Django, ...
Django通过抽象化的模型层(models)为你的网络应用提供对于数据的结构化处理和操作处理,数据库相关的代码一般写在 models.py 中,Django 支持 sqlite3, MySQL, PostgreSQL等数据库,使用数据库API对数据库进行增删改...
python_django_rest_api_sqlite GET —最常用的选项,根据您访问的端点和您提供的任何参数从API返回一些数据 POST —创建一条新记录,该记录将附加到数据库中 PUT —在您提供的给定URI上查找记录。 如果存在,请...
Token_Based_Authentication_using_Django(Rest_Api) 使用Django Rest Framework和mysql创建用于登录,注册,查看配置文件,编辑配置文件和删除配置文件的用户的Api 1.注册用户将在其中注册这些数据的地方 姓名 ...
Model Bakery为您提供了一种在Django中创建测试夹具的聪明方法。 使用简单而强大的API,您可以用一行代码创建许多对象。 Model Bakery是旧版的重命名。 安装 pip install model_bakery 用法和信息 基本用法 # ...
基于Django REST框架的用户注册REST API。 有关该项目的完整文档,请访问 。 要求 Django(1.10 +,2.0 +,3.0 +)和Django-REST-Framework(3.3+) Python 3.4或更高版本(不支持Python 2!) 产品特点 支持的...
当前的API设计和行为尚未最终确定,并且尚未确定特定的版本支持。 安装 pip install pydantic-django 用法 要求:Python 3.7+,Django 2+ 基本用法的示例: class UserSchema ( ModelSchema ): class Config : ...
最近在使用 Django 时,发现当调用 api 后,在数据库同一个进程下的事务中,出现了大量的数据库查询语句。调查后发现,是由于 Django ORM 的机制所引起。 Django Object-Relational Mapper(ORM)作为 Django 比较受...
Retrieving objects with the database API 180 Advanced queries with Q objects 183 Improving the search feature 184 Organizing content into pages (pagination) 185 Summary 190 Chapter 10: Building ...
ApiDjango 测试##Building the Project 您需要在 Eclipse 环境中安装Gradle 插件。 之后,您需要单击File -> Import... -> Gradle Project -> 选择build.gradle所在的目录,然后单击Build Model然后单击Next -> ...
django-httplog 用于调试 API 的数据库中... 'httplog', ...)确保用户模型可通过 settings.AUTH_USER_MODEL 或django.contrib.auth安装。 启动manage.py syncdb或manage.py migrate 添加中间件: MIDDLEWARE_CLASSES
自2010年以来,为Django应用创建美味的API。 目前处于测试阶段,但已在多个站点上积极用于生产中。 要求 核 Python 2.7+或Python 3.4+(无论您的Django版本支持什么) Django 1.11、2.2(LTS版本)或Django 3.0...
一般情况下我们Django默认的用户系统是满足不了我们的需求的,那么我们会对他做一定的扩展 创建用户项目 python manage.py startapp users 添加项目apps settings.py INSTALLED_APPS = [ ... 'users.apps....