`

Diango Model API

阅读更多
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


0
0
分享到:
评论

相关推荐

    PyPI 官网下载 | django-apiblueprint-tests-0.1.0.tar.gz

    【PyPI 官网下载 | django-apiblueprint-tests-0.1.0.tar.gz】 PyPI(Python Package Index)是Python社区的官方软件仓库,它为开发者提供了一个平台来发布、分享和发现Python软件包。在本例中,我们讨论的是一个名...

    Django Model

    Django的`serializers`模块允许将Model实例转换为JSON或其他格式,便于数据交换或API开发。这在处理RESTful API时非常有用。 7. **查询集(QuerySet)** Django的查询集是一种延迟加载的机制,它表示对数据库的...

    基于Django实现的微信小程序登录以及资源上传的API接口.zip

    在本项目中,开发者利用Django框架为微信小程序构建了一个包含登录验证和资源上传功能的API接口。Django是一个高效且强大的Python Web框架,适用于快速开发安全和可维护的网站。微信小程序则是一种轻量级的应用平台...

    Python库 | django_json_api_model-0.0.5-py3-none-any.whl

    《Python库django_json_api_model-0.0.5-py3-none-any.whl深度解析》 在编程领域,Python以其简洁、易读的语法和强大的库支持,深受开发者喜爱。在众多的Python库中,Django框架凭借其高效、安全和可扩展性,成为...

    PyPI 官网下载 | django-model-logs-0.1.15.tar.gz

    《PyPI与Django Model Logs库详解》 PyPI(Python Package Index)是Python开发者们发布和分享自己软件包的官方平台,它为全球的Python社区提供了丰富的第三方库。在PyPI官网上,我们可以找到各种各样的Python工具...

    Python-基于PythonDjango用于restful风格API的MockServer

    Django是Python的一个高级Web框架,它遵循“DRY”(Don't Repeat Yourself)原则,提供MVC(Model-View-Controller)架构和ORM(对象关系映射),使得开发者能够快速构建健壮的Web应用。在MockServer的场景下,...

    django_rest_api:这是关于学习Django Rest API框架

    **Django REST API 框架详解** Django REST API 是一个强大的工具,用于构建高效、可维护的Web API。这个框架是基于Python语言的,它利用了Django的现有功能,如ORM(对象关系映射)和模板系统,同时为创建RESTful ...

    django_user_api

    1. **Django框架**:Django遵循MVT(Model-View-Template)设计模式,提供了一个快速开发web应用的平台。它的核心组件包括ORM(对象关系映射)、数据库路由、自动管理后台、强大的中间件系统等。 2. **用户认证与...

    PyPI 官网下载 | django-model-import-0.4.11.tar.gz

    【PyPI 官网下载 | django-model-import-0.4.11.tar.gz】这个压缩包文件是Python开发中的一个重要组件,它与 Django 框架以及Python后端开发紧密相关。Django 是一个广受欢迎的开源Web框架,用于快速构建高效、可...

    django model object序列化实例

    你也可以使用Django的序列化API,为单个Model对象创建一个临时的QuerySet,然后进行序列化: ```python # 创建一个包含单个对象的临时QuerySet temp_queryset = SomeModel.objects.filter(id=myid) data = ...

    DjangoAPI:Django框架中的API示例

    本篇文章将聚焦于Django框架中的API设计,特别是如何通过API来处理文章数据。 API(Application Programming Interface)是软件系统之间交互的桥梁,允许不同的应用程序之间共享数据和服务。在Django中,我们可以...

    django-rest-api:用auth馈送api

    ModelViewSet基于Django的Model,所以我们需要先定义一个User模型,包含用户的基本信息,如用户名、电子邮件等。 为了序列化这些数据,我们需要创建一个Serializer。Serializer将Python对象转换为JSON或其他可发送...

    django-swappable-models:交换器-非官方的Django可交换模型API

    Swapper是非官方的API,用于但功能非常强大的Django功能:可交换模型。 Swapper有助于在您自己的可重用应用程序中实现任意可交换模型。 动机 假设您的可重用应用程序具有两个相关的表: from django . db import ...

    PyPI 官网下载 | django_model_values-0.5.1-py2.py3-none-any.whl

    标题中的"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

    "pc-django-api"是一个基于Python的项目,很可能是一个用于构建个人计算机(PC)端Web API的服务。Django是Python中最受欢迎的Web框架之一,它以其高效性、安全性和可扩展性而闻名。在这个项目中,"pc-django-api"可能...

    eCommerce-Django-API

    【eCommerce-Django-API】项目概述 eCommerce-Django-API 是一个基于Python的Django框架构建的电商应用程序的后端API。它旨在提供一个高效、安全的接口,用于处理电商平台的各种业务逻辑,如商品管理、订单处理、...

    Django_layui后台模板

    - RESTful API:如果项目需要前后端分离,可以利用Django的REST framework构建API接口,与前端进行通信。 7. 学习资源: - Django官方文档:了解Django框架的基础知识和最佳实践。 - Layui官方文档:学习Layui的...

    详解Django model转字典的几种方法

    总之,Django提供了多种方式将Model对象转换为字典,选择哪种方法取决于具体需求,如是否需要定制化转换过程、是否使用RESTful API等。在处理简单场景时,`__dict__`属性或`model_to_dict()`函数通常已经足够;而在...

    notify_me_django_api

    在Django中,模型(Model)是用来定义数据库结构的Python类。"notify_me_django_api"可能会有如下的模型:`User`(包含用户名、邮箱等)、`NotificationSetting`(包含用户订阅的事件类型、接收方式等)。Django的...

Global site tag (gtag.js) - Google Analytics