今天内容主要为实作模型和使用Django提供的管理网站进行资料操作。
今天将建立两个资料模型,其中Author和Book为一对多的关系:
开启应用程序资料夹(../专案资料夹/track/)下的models.py。
新增以下程序 (Book模型):
from uuid import uuid4
from datetime import datetime
class Book(models.Model):
bookid = models.UUIDField(primary_key=True, default=uuid4(), auto_created=True, editable=False)
authorid = models.ForeignKey('Author', on_delete=models.SET_NULL, null=True)
title = models.CharField(max_length=20)
oriurl = models.CharField(max_length=100, help_text="Enter URL")
totalsection = models.IntegerField(default=0)
BOOK_STATUS = (
('s', '连载'),
('e', '完结'),
('u', '未知')
)
bookstatus = models.CharField(max_length=1, choices=BOOK_STATUS, default = 'u')
istrack = models.BooleanField(default=False)
updatetime = models.DateTimeField(default=datetime.now(), editable=False)
class Meta:
ordering = ['bookid']
def __str__(self):
return self.title
Field
bookid:书籍id,primary key,使用GUID,在新增资料时由系统自动产生,不可由使用者编辑。
authorid:作者id,为Author模型的foreign key,可允许空值,当该作者id於Author被删除时会自动改为空值。
title:书名,最大长度为20。
oriurl:小说网址,最大长度为100
totalsection:总章节数,预设为0
bookstatus:连载状态,使用BOOK_STATUS (Tuple)为选项,预设为「u」(未知)。
istrack:是否列入追踪
updatetime:资料更新时间,不可由使用者编辑
Meta
def
class Author(models.Model):
authorid = models.UUIDField(primary_key=True, default=uuid4(), auto_created=True, editable=False)
authorname = models.CharField(max_length=30)
class Meta:
ordering = ['authorid']
def __str__(self):
return self.authorname
Field
authorid:作者id,使用GUID,在新增资料时由系统自动产生,不可由使用者编辑。
authorname:作者名称,最大长度为30。
Meta
def
这个动作,会根据专案的模型,於资料库中做对应的更新。
python manage.py makemigrate
python manage.py migrate
makemigrate:根据异动的model内容,产生对应的程序於migration资料夹下。
migrate:使用makemigrate产生的程序码,实际於资料库做异动。
执行完以上指令後,实际连线到MySQL资料库中,可以看到新建立了track_book和track_author。
Django内建的管理网站,可以提供基础的资料管理和权限管理功能,对於一个简单的系统而言,可以省去另外架设後台网站的人力。
为了能使用管理网站进行资料操作,需要先将模型注册在管理网站中进行注册。
开启应用程序资料夹(../专案资料夹/track/)下的admin.py,加入以下程序:
from .models import Book, Author
admin.site.register(Book)
admin.site.register(Author)
为了能简化後续测试流程,建立一个superuser帐号以登入管理网站。
python manage.py createsuperuser
进行此阶段时须先启动服务器。
python manage.py runserver
使用浏览器开启管理网站 (这边使用的是 http://127.0.0.1:8000/admin ),使用帐号登入後可以看到管理介面,分为权限管理和Track的模型管理两个区块。
在模型管理中,提供资料的增删读写功能,而画面中各栏位的呈现会和model中的属性设定有关。
>>: 【Side Project】 顾客点菜单画面设计2-Bootstrap
在Java程序设计中,有时一维阵列无法计算较多且较复杂的,这时我们需要二维阵列,例如要产生一个阵列A...
接下来几天的文章会像料理节目一样,用我事先准备好的材料 (模型、App...) 来进行说明,底下就来...
当开始与许多厂商联系, 认识了越来越多人, 自然而然会累积许多名片。 要是未来希望能搜寻特定厂商的特...
上一篇我们提到我们接着要开始玩一些比较有趣的实作~ 所以我们就来讲讲怎麽在web端实作绿幕抠像(Gr...
在HR的EMPLOYEES资料表中,查询2003年6月17日到职的员工姓名及工作部门代码。 SEL...