中文代码之Django官方入门:建立模型
创建项目后,首先用中文命名应用:
$ 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官方入门:建立模型的更多相关文章
- 中文代码示例之Vuejs入门教程(一)
原址: https://zhuanlan.zhihu.com/p/30917346 为了检验中文命名在主流框架中的支持程度, 在vuejs官方入门教程第一部分的示例代码中尽量使用了中文命名. 所有演示 ...
- 2017-11-09 中文代码示例之Vuejs入门教程(一)
"中文编程"知乎专栏原链 为了检验中文命名在主流框架中的支持程度, 在vuejs官方入门教程第一部分的示例代码中尽量使用了中文命名. 所有演示都在本地测试通过, 源码在这里. 下面 ...
- 中文代码示例之Angular入门教程尝试
原址: https://zhuanlan.zhihu.com/p/30853705 原文: 中文代码示例教程之Angular尝试 为了检验中文命名在Angular中的支持程度, 把Angular官方入 ...
- 2017-11-07 中文代码示例之Angular入门教程尝试
"中文编程"知乎专栏原址 原文: 中文代码示例教程之Angular尝试 为了检验中文命名在Angular中的支持程度, 把Angular官方入门教程的示例代码中尽量使用了中文命名. ...
- 2017-11-20 中文代码示例之Vuejs入门教程(一)问题后续
"中文编程"知乎专栏原文 第一个issue: Error compiling template if using unicode naming as v-for alias · I ...
- TensorFlow 中文资源全集,官方网站,安装教程,入门教程,实战项目,学习路径。
Awesome-TensorFlow-Chinese TensorFlow 中文资源全集,学习路径推荐: 官方网站,初步了解. 安装教程,安装之后跑起来. 入门教程,简单的模型学习和运行. 实战项目, ...
- 2017-10-31 中文代码示例教程之Vuejs入门&后续计划
"中文编程"知乎专栏原链 为了检验中文命名在主流框架中的支持程度, 这里把vuejs官方入门教程第一部分的示例代码中尽量使用了中文命名. 过程中有一些发现, 初步看来Vuejs对中 ...
- TensorFlow 中文资源精选,官方网站,安装教程,入门教程,实战项目,学习路径。
Awesome-TensorFlow-Chinese TensorFlow 中文资源全集,学习路径推荐: 官方网站,初步了解. 安装教程,安装之后跑起来. 入门教程,简单的模型学习和运行. 实战项目, ...
- 2018-06-20 中文代码示例视频演示Python入门教程第三章 简介Python
知乎原链 Python 3.6.5官方入门教程中示例代码汉化后演示 对应在线文档: 3. An Informal Introduction to Python 不知如何合集, 请指教. 中文代码示例P ...
随机推荐
- DevExpress的TreeList实现显示本地文件目录并自定义右键实现删除与重命名文件
场景 使用DevExpress的TreeList显示本磁盘下文件目录并在树节点上右键实现删除与添加文件. 效果 自定义右键效果 实现 首先在包含Treelist的窗体的load方法中对treelist ...
- 为什么局部内部类中访问同一方法中的变量,该变量一定要是final修饰的
最近有一个疑惑:为什么局部内部类中访问同一方法中的变量,该变量一定要是final修饰的 首先,我们看一个局部内部类的例子: class OutClass { ...
- Python Web(三)
Infi-chu: http://www.cnblogs.com/Infi-chu/ 一.Django母版渲染 1.创建母版文件 base.html <!DOCTYPE html> < ...
- iOS swift 带有attributeString的多行文本label
class AttributeStringGenerator { var attributeString: NSMutableAttributedString! var lineSpacing: CG ...
- HTML技巧篇:实现元素水平与垂直居中的几种方式
如何使用html+css实现元素的水平与垂直居中效果,这也是我们网页在编码制作中会经常用到的问题. 1)单行文本的居中 主要实现css代码: 水平居中:text-align:center;垂直居中:l ...
- s3c2440裸机-内存控制器(一、内存控制器的原理)
1.内存接口概念 S3C2440是个片上系统,有GPIO控制器(接有GPIO管脚(GPA-GPH)),有串口控制器 (接有TXD RXD引脚),有memory controller内存控制器,有Nan ...
- acwing 70-72 剑指OFFER 二叉树相关
地址 https://www.acwing.com/problem/content/66/ https://www.acwing.com/problem/content/67/ https://www ...
- bzoj5219 [Lydsy2017省队十连测] 最长路径
题意: 做法来自 首先竞赛图缩点后是一条链,\(1\)号节点在开头的那个\(SCC\)中,因此从\(1\)号节点出发的最长链即为\(1\)号节点所在的\(SCC\)的大小\(+1\)号节点拓扑序之后的 ...
- WPF 后台获得 数据模板里的内容控件(DataTemplate)
原文:WPF 后台获得 数据模板里的内容控件(DataTemplate) 假如 <Window.Resources> 里 有一个 Datatemplate 我想获得TextBlo ...
- matlab练习程序(克莱姆法则解方程)
<线性代数>同济第五版第一章最后一节的内容,我都差点忘记了,在这里写个简单的例子记录一下. matlab代码如下: clear all; close all; clc; % A*x = b ...