博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
中文代码之Django官方入门:建立模型
阅读量:1888 次
发布时间:2019-04-26

本文共 2083 字,大约阅读时间需要 6 分钟。

参考

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

$ python3 manage.py startapp 投票

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

import datetimefrom django.db import modelsfrom django.utils import timezoneclass 问题(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 shellPython 3.7.3 (v3.7.3:ef4ec6ed12, Mar 25 2019, 16:52:21) [Clang 6.0 (clang-600.0.57)] on darwinType "help", "copyright", "credits" or "license" for more information.(InteractiveConsole)>>> from 投票.models import 选项, 问题>>> 问题.objects.all()
]>>>> 问题.objects.filter(id=1)
]>>>> 问题.objects.filter(内容__startswith='最')
]>>>> from django.utils import timezone>>> 今年=timezone.now().year>>> >>> 问题.objects.get(发问日期__year=今年)
<问题: 最近可好?>
>>> 问题.objects.get(id=2)Traceback (most recent call last): File "
", line 1, in
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()
>>> 问.选项_set.create(内容='没啥', 票数=0)
<选项: 没啥>
>>> 问.选项_set.create(内容='看天', 票数=0)
<选项: 看天>
>>> 选=问.选项_set.create(内容='打字', 票数=0)>>> 选.问题
<问题: 最近可好?>
>>> 问.选项_set.all()
,
<选项: 看天>
,
<选项: 打字>
]>>>> 问.选项_set.count()3>>> 选项.objects.filter(问题__发问日期__year=今年)
,
<选项: 看天>
,
<选项: 打字>
]>>>> 选=问.选项_set.filter(内容__startswith='打')>>> 选.delete()(1, { '投票.选项': 1})>>> 选项.objects.filter(问题__发问日期__year=今年)
,
<选项: 看天>
]>

完整源码在:

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

转载地址:http://ohgbf.baihongyu.com/

你可能感兴趣的文章
C#-java RSA加密解密
查看>>
bootstrap手风琴效果
查看>>
sql生成随机字符串
查看>>
天下大事必作于细,天下难事必作于易
查看>>
C# base64编码的字符串与图片互转
查看>>
emailautocomplete
查看>>
开发流程
查看>>
前端开发与网页制作的区别
查看>>
.NET(C#)主流的ORM框架
查看>>
sqlserver获取所有表和表字段
查看>>
mysql-connector-odbc-8.0.11-winx64.msi安装失败
查看>>
百度王一男: DevOps 的前提是拆掉业务-开发-测试-运维中间的三面墙
查看>>
sqlserver获取指定数据库的描述
查看>>
sql server datetime类型字段使用isnull返回1900-01-01 00:00:00.000的问题
查看>>
SqlServer收缩数据库语句
查看>>
MsDepSvc 启动失败
查看>>
SqlServer收缩日志文件
查看>>
ajax时间戳或随机数
查看>>
.Net C#上传文件最大设置
查看>>
Access-Control-Allow-Origin,跨域
查看>>