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
分享到:
相关推荐
【PyPI 官网下载 | django-apiblueprint-tests-0.1.0.tar.gz】 PyPI(Python Package Index)是Python社区的官方软件仓库,它为开发者提供了一个平台来发布、分享和发现Python软件包。在本例中,我们讨论的是一个名...
Django的`serializers`模块允许将Model实例转换为JSON或其他格式,便于数据交换或API开发。这在处理RESTful API时非常有用。 7. **查询集(QuerySet)** Django的查询集是一种延迟加载的机制,它表示对数据库的...
在本项目中,开发者利用Django框架为微信小程序构建了一个包含登录验证和资源上传功能的API接口。Django是一个高效且强大的Python Web框架,适用于快速开发安全和可维护的网站。微信小程序则是一种轻量级的应用平台...
《Python库django_json_api_model-0.0.5-py3-none-any.whl深度解析》 在编程领域,Python以其简洁、易读的语法和强大的库支持,深受开发者喜爱。在众多的Python库中,Django框架凭借其高效、安全和可扩展性,成为...
《PyPI与Django Model Logs库详解》 PyPI(Python Package Index)是Python开发者们发布和分享自己软件包的官方平台,它为全球的Python社区提供了丰富的第三方库。在PyPI官网上,我们可以找到各种各样的Python工具...
Django是Python的一个高级Web框架,它遵循“DRY”(Don't Repeat Yourself)原则,提供MVC(Model-View-Controller)架构和ORM(对象关系映射),使得开发者能够快速构建健壮的Web应用。在MockServer的场景下,...
**Django REST API 框架详解** Django REST API 是一个强大的工具,用于构建高效、可维护的Web API。这个框架是基于Python语言的,它利用了Django的现有功能,如ORM(对象关系映射)和模板系统,同时为创建RESTful ...
1. **Django框架**:Django遵循MVT(Model-View-Template)设计模式,提供了一个快速开发web应用的平台。它的核心组件包括ORM(对象关系映射)、数据库路由、自动管理后台、强大的中间件系统等。 2. **用户认证与...
【PyPI 官网下载 | django-model-import-0.4.11.tar.gz】这个压缩包文件是Python开发中的一个重要组件,它与 Django 框架以及Python后端开发紧密相关。Django 是一个广受欢迎的开源Web框架,用于快速构建高效、可...
你也可以使用Django的序列化API,为单个Model对象创建一个临时的QuerySet,然后进行序列化: ```python # 创建一个包含单个对象的临时QuerySet temp_queryset = SomeModel.objects.filter(id=myid) data = ...
本篇文章将聚焦于Django框架中的API设计,特别是如何通过API来处理文章数据。 API(Application Programming Interface)是软件系统之间交互的桥梁,允许不同的应用程序之间共享数据和服务。在Django中,我们可以...
ModelViewSet基于Django的Model,所以我们需要先定义一个User模型,包含用户的基本信息,如用户名、电子邮件等。 为了序列化这些数据,我们需要创建一个Serializer。Serializer将Python对象转换为JSON或其他可发送...
Swapper是非官方的API,用于但功能非常强大的Django功能:可交换模型。 Swapper有助于在您自己的可重用应用程序中实现任意可交换模型。 动机 假设您的可重用应用程序具有两个相关的表: from django . db import ...
标题中的"PyPI 官网下载 | django_model_values-0.5.1-py2.py3-none-any.whl"指的是Python的包管理器PyPI(Python Package Index)上发布的名为`django_model_values`的软件包的特定版本。这个版本是0.5.1,它是一个...
"pc-django-api"是一个基于Python的项目,很可能是一个用于构建个人计算机(PC)端Web API的服务。Django是Python中最受欢迎的Web框架之一,它以其高效性、安全性和可扩展性而闻名。在这个项目中,"pc-django-api"可能...
【eCommerce-Django-API】项目概述 eCommerce-Django-API 是一个基于Python的Django框架构建的电商应用程序的后端API。它旨在提供一个高效、安全的接口,用于处理电商平台的各种业务逻辑,如商品管理、订单处理、...
- RESTful API:如果项目需要前后端分离,可以利用Django的REST framework构建API接口,与前端进行通信。 7. 学习资源: - Django官方文档:了解Django框架的基础知识和最佳实践。 - Layui官方文档:学习Layui的...
总之,Django提供了多种方式将Model对象转换为字典,选择哪种方法取决于具体需求,如是否需要定制化转换过程、是否使用RESTful API等。在处理简单场景时,`__dict__`属性或`model_to_dict()`函数通常已经足够;而在...
在Django中,模型(Model)是用来定义数据库结构的Python类。"notify_me_django_api"可能会有如下的模型:`User`(包含用户名、邮箱等)、`NotificationSetting`(包含用户订阅的事件类型、接收方式等)。Django的...