参考编写你的第一个 Django 应用,第 2 部分

创建项目后,首先用中文命名应用:

$ python3 manage.py startapp 投票

之后在models.py建立模型,其他各种相关配置略去,详细请见末尾源码库:

import datetime

from django.db import models
from django.utils import timezone class 问题(models.Model):
内容 = models.CharField(max_length=200)
发问日期 = models.DateTimeField('发布问题日期') def __str__(self):
return self.内容 def 刚发问(self):
return self.发问日期 >= timezone.now() - datetime.timedelta(days=1) class 选项(models.Model):
问题 = models.ForeignKey(问题, on_delete=models.CASCADE)
内容 = models.CharField(max_length=200)
票数 = models.IntegerField(default=0) def __str__(self):
return self.内容

交互环境测试API通过:

$ python3 manage.py shell
Python 3.7.3 (v3.7.3:ef4ec6ed12, Mar 25 2019, 16:52:21)
[Clang 6.0 (clang-600.0.57)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>> from 投票.models import 选项, 问题
>>> 问题.objects.all()
<QuerySet [<问题: 最近可好?>]>
>>> 问题.objects.filter(id=1)
<QuerySet [<问题: 最近可好?>]>
>>> 问题.objects.filter(内容__startswith='最')
<QuerySet [<问题: 最近可好?>]>
>>> from django.utils import timezone
>>> 今年=timezone.now().year
>>>
>>> 问题.objects.get(发问日期__year=今年)
<问题: 最近可好?>
>>> 问题.objects.get(id=2)
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/django/db/models/manager.py", line 82, in manager_method
return getattr(self.get_queryset(), name)(*args, **kwargs)
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/django/db/models/query.py", line 408, in get
self.model._meta.object_name
投票.models.问题.DoesNotExist: 问题 matching query does not exist.
>>> 问问
>>> 问=问题.objects.get(pk=1)
>>> 问.刚发问()
True
>>> 问.选项_set.all()
<QuerySet []>
>>> 问.选项_set.create(内容='没啥', 票数=0)
<选项: 没啥>
>>> 问.选项_set.create(内容='看天', 票数=0)
<选项: 看天>
>>> 选=问.选项_set.create(内容='打字', 票数=0)
>>> 选.问题
<问题: 最近可好?>
>>> 问.选项_set.all()
<QuerySet [<选项: 没啥>, <选项: 看天>, <选项: 打字>]>
>>> 问.选项_set.count()
3
>>> 选项.objects.filter(问题__发问日期__year=今年)
<QuerySet [<选项: 没啥>, <选项: 看天>, <选项: 打字>]>
>>> 选=问.选项_set.filter(内容__startswith='打')
>>> 选.delete()
(1, {'投票.选项': 1})
>>> 选项.objects.filter(问题__发问日期__year=今年)
<QuerySet [<选项: 没啥>, <选项: 看天>]>

完整源码在:program-in-chinese/Django_tutorial_zh

测试环境:Python 3.7.3, Django-2.2.3, Mac

中文代码之Django官方入门:建立模型的更多相关文章

  1. 中文代码示例之Vuejs入门教程(一)

    原址: https://zhuanlan.zhihu.com/p/30917346 为了检验中文命名在主流框架中的支持程度, 在vuejs官方入门教程第一部分的示例代码中尽量使用了中文命名. 所有演示 ...

  2. 2017-11-09 中文代码示例之Vuejs入门教程(一)

    "中文编程"知乎专栏原链 为了检验中文命名在主流框架中的支持程度, 在vuejs官方入门教程第一部分的示例代码中尽量使用了中文命名. 所有演示都在本地测试通过, 源码在这里. 下面 ...

  3. 中文代码示例之Angular入门教程尝试

    原址: https://zhuanlan.zhihu.com/p/30853705 原文: 中文代码示例教程之Angular尝试 为了检验中文命名在Angular中的支持程度, 把Angular官方入 ...

  4. 2017-11-07 中文代码示例之Angular入门教程尝试

    "中文编程"知乎专栏原址 原文: 中文代码示例教程之Angular尝试 为了检验中文命名在Angular中的支持程度, 把Angular官方入门教程的示例代码中尽量使用了中文命名. ...

  5. 2017-11-20 中文代码示例之Vuejs入门教程(一)问题后续

    "中文编程"知乎专栏原文 第一个issue: Error compiling template if using unicode naming as v-for alias · I ...

  6. TensorFlow 中文资源全集,官方网站,安装教程,入门教程,实战项目,学习路径。

    Awesome-TensorFlow-Chinese TensorFlow 中文资源全集,学习路径推荐: 官方网站,初步了解. 安装教程,安装之后跑起来. 入门教程,简单的模型学习和运行. 实战项目, ...

  7. 2017-10-31 中文代码示例教程之Vuejs入门&后续计划

    "中文编程"知乎专栏原链 为了检验中文命名在主流框架中的支持程度, 这里把vuejs官方入门教程第一部分的示例代码中尽量使用了中文命名. 过程中有一些发现, 初步看来Vuejs对中 ...

  8. TensorFlow 中文资源精选,官方网站,安装教程,入门教程,实战项目,学习路径。

    Awesome-TensorFlow-Chinese TensorFlow 中文资源全集,学习路径推荐: 官方网站,初步了解. 安装教程,安装之后跑起来. 入门教程,简单的模型学习和运行. 实战项目, ...

  9. 2018-06-20 中文代码示例视频演示Python入门教程第三章 简介Python

    知乎原链 Python 3.6.5官方入门教程中示例代码汉化后演示 对应在线文档: 3. An Informal Introduction to Python 不知如何合集, 请指教. 中文代码示例P ...

随机推荐

  1. 记录一次netcore3.0 code first使用迁移命令报错问题

    环境描述:macOS .vscode .netcore3.0 迁移工具:Microsoft.EntityFrameworkCore.Tools 遇到的问题: Could not execute bec ...

  2. Kafka与RabbitMQ对比

    Infi-chu: http://www.cnblogs.com/Infi-chu/ Kafka是LinkedIn在2012年发布的开源的消息发布订阅系统,他主要用于处理活跃的流式数据.大数据量的数据 ...

  3. 应用DEV第三方界面控件制作批量添加水印程序

    本次应用DevExpress和C#语言制作了一个批量添加水印的程序,看界面效果图: 界面中既可以进行文字水印添加,也可以图片水印添加,同时还可以对水印的位置进行设置,比较实用! 文字水印的具体添加情况 ...

  4. SQL Server有意思的数据类型隐式转换问题

    写这篇文章的时候,还真不知道如何取名,也不知道这个该如何将其归类.这个是同事遇到的一个案例,案例比较复杂,这里抽丝剥茧,仅仅构造一个简单的案例来展现一下这个问题.我们先构造测试数据,如下所示: CRE ...

  5. 如何用css实现弧度圆角?三角形以及圆形

    用css画矩形圆角 ,需要使用到border-radius这个属性,下图四角圆,代码显示如下:border-radius:60px; width:360px; height:200px; border ...

  6. docker上启动nginx,并配置修改nginx的配置文件

    1.使用docker 下载nginx 镜像  docker pull nginx 2.启动nginx docker run --name nginx -p 80:80 -d nginx 这样就简单的把 ...

  7. SSH的本地、远程、动态端口转发实验笔记

    SSH端口转发 SSH 会自动加密和解密所有 SSH 客户端与服务端之间的网络数据.但是,SSH 还能够将其他 TCP 端口的网络数据通过 SSH 链接来转发,并且自动提供了相应的加密及解密服务.这一 ...

  8. cf 之lis+贪心+思维+并查集

    https://codeforces.com/contest/1257/problem/E 题意:有三个集合集合里面的数字可以随意变换位置,不同集合的数字,如从第一个A集合取一个数字到B集合那操作数+ ...

  9. [C0] 引言(Introduction)

    引言(Introduction) 欢迎(Welcome) 机器学习是目前信息技术中最激动人心的方向之一.在这门课中,你将学习到这门技术的前沿,并可以自己实现学习机器学习的算法. 你或许每天都在不知不觉 ...

  10. jenkins报错:Problem accessing /jenkins/. Reason: HTTP ERROR 404

    这是一个Jenkins的Bug.临时解决方法是:在浏览器中手工输入:http://<ip>:<port>.不要访问"/jenkins"这个路径.